Arn*_*yno 10 xcode objective-c ios swift
例如,我在swift中有这个方法:
@objc class MyClass: NSObject
....
@objc class func viewWithIndex(index: Int, str: String) {
println(index, str)
}
Run Code Online (Sandbox Code Playgroud)
那么我想在我的objective-c类中调用该方法,我期待这个调用简单,[MyClass viewWithIndex:10 str:@"string"];但它不起作用.
我怎么称呼它?请帮忙.
注意:我已经对objective-c进行了快速函数调用,[MyClass showSomething];这意味着我已经成功设置了桥接类的必要设置.只有具有两个或更多参数的函数才是我的问题.:)
解决了:
我不知道我发生了什么,但我只是重新启动我的mac并删除objc它,它与电话一起工作[MyClass viewWithIndex:10 str:@"string"];.我记得读过文档.
hap*_*384 12
这在Swift 3.0中对我有用
public class func viewWithIndex(_ index: Int, str: String) {
println(index, str)
}
Run Code Online (Sandbox Code Playgroud)
在Swift声明中的第一个参数之前添加下划线允许我从目标c调用而不命名第一个参数,如下所示:
[MyClass viewWithIndex:10 str:@"string"]
Run Code Online (Sandbox Code Playgroud)
我相信您需要将该函数标记为公共(有意义)或动态。否则,它将成为 Swift 优化的候选者(内联或 vtable 方法),这将使其对 Objective-C 不可见。
尝试这个:
public class func viewWithIndex(index: Int, str: String) {
println(index, str)
}
Run Code Online (Sandbox Code Playgroud)
或者这个:(确实没有意义,但也应该有效)
private dynamic class func viewWithIndex(index: Int, str: String) {
println(index, str)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7855 次 |
| 最近记录: |