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 进化的脚步,而变得更强大