Swift编程:对象类型与集合类型深度解析
1. 避免向AnyObject发送消息
在Swift编程中,应避免养成向 AnyObject 发送消息的习惯。因为这涉及动态查找,在编译时和运行时的开销都很大。
2. 对象标识
有时候,我们关心的不是对象的类型,而是该对象是否就是我们所认为的那个特定对象。对于值类型,不会出现这个问题,但对于引用类型,尤其是类实例,就可能会遇到。
Swift提供了身份运算符 === 来解决这个问题。其操作数的类型为 AnyObject? ,表示类型为类的对象,或者包装类型为类的可选类型。它用于比较两个对象引用是否指向同一个对象,这与相等运算符 == 不同, == 是比较值是否相等。身份运算符还有一个否定版本 !== 。
以下是一个典型的使用场景:
@objc func changed(_ n:Notification) {
let player = MPMusicPlayerController.applicationMusicPlayer
if n.object as AnyObject === player {
// ...
}
}
3. AnyClass类型
AnyClass 是 AnyObject
超级会员免费看
订阅专栏 解锁全文
15

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



