iOS开发的52个要点纪要之六

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操作。


你可能感兴趣的:(ios,Objective-C,内存管理,ios开发)