C、Objective - C 与 Swift 的交互及特性解析
1. 方法重载(Overloading)
在 Swift 中,方法重载是被允许的,然而在 Objective - C 里却不支持。例如,两个名为 myMethod: 的视图控制器实例方法,一个接收 CGFloat 类型参数,另一个接收 NSString 类型参数,且都不返回结果,这样的方法在 Objective - C 中是非法的。所以,尽管这两个 Swift 方法在 Swift 里是合法的,但如果它们都要对 Objective - C 可见,那就不合法了。在 Swift 中,方法之间相互重载是没问题的,只要不向 Objective - C 暴露多个这样的方法就行。
2. 可变参数(Variadics)
Objective - C 有自己版本的可变参数。以 NSArray 的实例方法 arrayWithObjects: 为例,其声明如下:
+ (id)arrayWithObjects:(id)firstObj, ... ;
与 Swift 不同,Objective - C 中的这类方法必须明确知道提供了多少个参数。很多这样的方法,像 arrayWithObjects: ,使用 nil 作为终止符。也就是说,调用者在最后一个参数后提供 nil ,被调用者遇到
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



