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]])
超级会员免费看
订阅专栏 解锁全文

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



