虽然说Swift是作为一种全新的语言被推出的,但是不可避免的需要借助于Apple生态来对它进行推广,在推广的过程中,就不可避免的需要被使用在Cocoa框架中,所以我们今天来总结一下当Swift被使用在Cocoa框架中时需要注意的一些事项。
在我们开始讨论之前,我们先来了解一下Swift与Objective-C的一些不同点。
区别
我们通过使用Swift与Objective-C来编写具有一个存储属性、一个计算属性、一个实例方法的类:
Objective-C
@interface OCModel : NSObject
///存储属性
@property (nonatomic, copy) NSString *privateName;
///计算属性
@property (nonatomic, copy) NSString *publicName;
///实例方法
- (void)showName;
@end
@implementation OCModel
- (void)setPublicName:(NSString *)publicName {
self.privateName = publicName;
}
- (NSString *)publicName {
return self.privateName;
}
///实例方法
- (void)showName {
NSLog(@"OCModel name is %@", self.privateName);
}
@end
Swift
class SwiftModel {
///存储属性
var privateName: String?
///计算属性
var publicName: String {
get {
return privateName ?? "none"
}
set {
privateName = newValue
}
}
///实例方法
func showName() -> Void {
print("SwiftModel name is \(privateName ?? "none")")
}
}
现在我们对两种语言定义的类通过Runtime来读取一下相关的内容,结果如下:
Objective-C
Swift
从上面结果可见,Swift中的属性即方法并不能通过Runtime机制读取出,这是因为Ru