Objective-C id as Swift Any-笔记
Apple Swift 博客原文地址:https://developer.apple.com/swift/blog/?id=39
主要变化:Swift 3 中 Any 映射 Objective-C 的 id
Objective-C | Swift 2 | Swift 3 |
---|---|---|
id | AnyObject | Any |
NSArray * | [AnyObject] | [Any] |
NSDictionary * | [NSObject: AnyObject] | [AnyHashable: Any] |
NSSet * | Set<NSObject> |
Set<AnyHashable> |
- 方法和协议的中的AnyObject均改为Any
- 调用大部分 C 和 Objective-C 需要显示类型转换,指针为
UnsafePointer<AnyObject>
- Objective-C 协议仍是限制在 Class,而 structs 和 enums 无法符合。需要显示转换,如:String as NSString, Array as NSArray
- Any 没有 AnyObject 中的一些魔法查询方法可用,如:(x as AnyObject).description
- Swift 值类型隐式转换 id
- Cocoa 也紧随 Swift 进化的脚步,而变得更强大