26、不要在分类中定义属性
把封装数据所用的全部属性都定义在主接口里。
在“class-continuation分类”之外的其他分类中,可以定义存取方法,但尽量不要定义属性。
27、使用“class-continuation分类”隐藏实现细节
通过“class-continuation分类”向类中新增实例变量。
如果某属性在主接口中声明为“只读”,而类的内部又要用设置方法修改此属性,那么就在“class-continuation分类”中将其扩展为“可读写”。
把私有方法的原型声明在“class-continuation分类”里面。
若想使类所遵循的协议不为人所知,则可于“class-continuation分类”中声明。
28、通过协议提供匿名对象
协议可在某种程度上提供匿名类型。具体的对象类型可以淡化成遵循某协议的id类型,协议里规定了对象所应实现的方法。
使用匿名对象来隐藏类型名称(或类名)。
如果具体类型不重要,重要的是对象能够响应(定义在协议里的)特定方法,那么可以使用匿名对象来表示。
29、引用计数
引用计数机制通过可以递增递减的计数器来管理内存。对象创建好之后,其保留计数至少为1。若保留计数为正,则对象继续存活。当保留计数降为0时,对象就被销毁了。
在对象的生命周期中,其余对象通过引用来保留或释放此对象。保留与释放操作分别会递增及递减保留计数。
30、ARC简化引用计数
有ARC之后,程序员就无须担心内存管理问题了。使用ARC来编程,可省去类中的许多“样板代码”。
ARC管理对象生命期的办法基本上就是:在合适的地方插入“保留”及“释放”操作,在ARC环境下,变量的内存管理语义可以通过修饰符指明,而原来则需要手动执行“保留”及“释放”操作。
由方法所返回的对象,其内存管理语义总是通过方法名来实现。ARC将此确定为开发者必须遵守的规则。
ARC只负责管理Objective-C对象的内存。尤其要注意:CoreFoundation对象不归ARC管理,开发者必须适时调用CFRetain/CFRelease操作。