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

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



