58、Objective-C 编程中的内省、协议、类别和扩展

Objective-C 编程中的内省、协议、类别和扩展

1. 内省(Introspection)

内省是检查对象元数据的能力,可确定对象的类、实现的方法、声明的属性等。常用的内省测试有以下三种:

1.1 类测试(Class)

每个对象都有一个 class 属性,该属性表示对象所属的类。类本身也是一个对象(类型为 Class ),类对象有描述该类的属性和方法。

以下是所需访问器方法行为的表格:
| 属性 | 实现要求 |
| — | — |
| readonly | 必须实现 getter 方法,也可实现 setter 方法供类自身使用 |
| copy | setter 方法必须复制被设置的对象,并保留对副本对象的引用,不可变对象除外 |
| strong, weak, retain, assign | 根据属性声明的规则保留对象值,如弱引用属性不能强引用对象 |
| getter=, setter= | 根据属性声明命名 getter 和 setter 方法 |
| atomic | 编写 getter 和 setter 方法,使属性值的访问和更改具有原子性,通常使用互斥信号量 |

有两个方法可用于测试对象的类:
- -isKindOfClass: :确定对象是否是特定类或该类的任何子类。示例代码如下:

if ([view isKindOfClass:[UIControl class]]) 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值