[email protected]后的修饰符
strong : 该属性值对应 __strong 关键字,即该属性所声明的变量将成为对象的持有者,等同于"retain"
weak : 该属性对应 __weak 关键字,与 __weak 定义的变量一致,该属性所声明的变量将没有对象的所有权,并且当对象被释放之后,对象将被自动赋值nil,记住IBOutlet应该使用weak
copy : 和之前的copy一样,复制一个对象并创建strong关联
assign : 对象不能使用assign,但原始类型(BOOL、int、float)仍然可以使用
常见问题:
- @property 后面可以有哪些修饰符?
- 什么情况使用 weak 关键字,相比 assign 有什么不同?
- 怎么用 copy 关键字?
- 这个写法会出什么问题: @property (copy) NSMutableArray *array;
- 如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?
这一套问题区分度比较大,如果上面的问题都能回答正确,可以延伸问更深入点的:
- @property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的
- @protocol 和 category 中如何使用 @property
- runtime 如何实现 weak 属性
时间: 2024-10-24 18:57:40