23、Swift 编程中的对象类型与集合类型详解

Swift 编程中的对象类型与集合类型详解

1. 避免频繁向 AnyObject 发送消息

在 Swift 编程里,不要养成向 AnyObject 发送消息的习惯。这是因为向 AnyObject 发送消息时涉及动态查找,这在编译时和运行时都会带来较高的开销。

2. 对象标识

有时候,我们关心的并非对象的类型,而是该对象是否就是我们所认为的那个特定对象。这种问题在值类型中不会出现,但在引用类型(特别是类实例)中可能会出现。

Swift 提供了身份运算符 === 来解决这个问题。该运算符的操作数类型为 AnyObject? ,意味着操作数可以是类类型的对象,或者是包装了类类型的可选类型。它用于比较两个对象引用是否指向同一个对象,与相等运算符 == 不同, == 比较的是值,而 === 比较的是对象引用。此外,还有 === 的否定版本 !==

下面是一个典型的使用场景示例:

@objc func changed(_ n: Notification) {
    let player = MPMusicPlayerController.applicationMusicPlayer
    if n.object as AnyObject === player {
        // ...
  
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值