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