【发布时间】:2014-02-06 21:03:06
【问题描述】:
从 Objective-C 2.0 开始,我们有了 properties,这是一种用于获取和设置实例变量值的好语法。从 Clang 3.1 开始,所有非动态属性、不具有显式 getter 的只读属性或没有自定义 getter 和 setter 的属性都自动合成到 ivars。自从 ARC 以来,我们为属性提供了 weak/strong annotations,ARC 使用这些属性来定义自动合成属性的内存管理逻辑。
属性仍然可以手动合成,例如例如,对于由 ivar 支持并返回默认值的只读属性。
有时,如果根本不合成属性,它们也很有用。当我使用这种行为时,我发现了一些用例:
- 使用自定义 ivar 存储实际值并执行一些附加操作的自定义 getter 和 setter。
- 动态属性,例如在
NSManagedObject的子类中。 - 只读属性,它简单地传递存储在另一个属性(例如私有属性)中的对象的属性。
问题:根据实际使用情况用弱/强注释这些非综合属性是否有意义?最佳做法是什么?
【问题讨论】:
-
旁注 - 没有显式 getter 方法的只读属性可以自动合成。
-
@rmaddy 感谢您的提示,我在第二句话中解决了这个问题...
标签: ios objective-c memory-management properties automatic-ref-counting