如何在带有参数的objective-C中实现swift委托方法?

维维克

我有一个具有以下委托方法的快速协议

@objc public protocol CuteDelegate: NSObjectProtocol {
    @objc func myCuteFunc(name: NSString)
}

我也迅速声明了委托对象

weak var delegate : CuteDelegate?

在我实现上述委托方法的目标 C 控制器中,如下所示

-(void)myCuteFunc:(NSString* )name{

}

但是在 swift 控制器中调用方法时

 self.delegate?.myCuteFunc(name: str as NSString)

我将无法识别的选择器发送到实例

任何线索是什么问题

瓦瓦马

您需要考虑第一个参数的名称:

任何一个:

  1. 让你的 Objective-C 函数 -(void)myCuteFuncWithName:(NSString* )name

或者:

  1. 将您的协议更改为@objc func myCuteFunc(_ name: NSString)并调用它self.delegate?.myCuteFunc(str)

这只是 Objective-C 函数名称工作方式与 Swift 为其参数命名方式的产物。Objective-C 没有办法命名第一个参数(通常由函数名来描述),所以如果 Swift 有第一个参数的标签,则使用的约定是添加With加上参数名称(参数名称大写)到函数名。通过添加_,您可以使第一个参数未命名,并且可以更好地转换为 Objective-C 命名约定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将带有“&”的字典参数传递给 Swift 中的 Objective-C 方法

如何在Swift中没有参数的情况下调用Objective-C`initFoo`方法?

如何使用委托在 C# 中实现委托模式?

如何在Swift中实现UIPageViewController委托的transitionCompleted?

如何在MiniTest中对带有参数的方法进行存根

如何在列表中添加带有参数的方法

如何在ruby中动态创建带有参数的方法?

如何在C ++中传递带有'&'符号的参数

如何在Objective-C中调用具有多个参数的Swift初始化方法

如何在带有附加参数的其他函数中调用带有参数的函数?

如何在EJS中包含带有参数的模板?

如何在ocamldebug中启动带有参数的程序?

如何在Android的WorkManager中创建带有参数的Worker?

如何在nohup中传递带有空格的参数?

如何在Bash中获取带有标志的参数

如何在Octave中定义带有参数的函数?

如何在Django模板中调用带有参数的函数?

如何在python中传递带有参数的函数?

如何在带有参数的函数中调用变量函数?

如何在Blazor中调用带有参数的函数?

如何在route中运行带有参数的artisan命令?

如何在gatsbyJS中动态创建带有参数的页面?

如何在c中使用带有参数的函数指针?

如何从Objective C项目App委托中调用Swift?

如何在Objective-C和Swift中实现“ didSelectButtonInCellAtIndexPath:”?

在Swift中如何在GCD主线程上调用带有参数的方法?

Objective-C中的WKWebview委托方法

如何在每个实现中实现带有附加参数/信息的接口

Swift-如何在函数的参数中传递带有参数的函数?