建议33:使用类别把类的实现拆分成不同的文件
类别可以访问其继承的类的实例变量,类别的方法具有最高的优先级类别,可以分散到不同的文件中,甚至不同的框架中。
1.利用类别机制,可将同一个类的实现,由一个常规的实现文件.m拆分成多个实现文件.m。
2.把同一个类的实现文件.m拆分成多个实现文件.m,适合类的实现文件大多比较庞大,拆分的标准多是以同类型或同业务来作为参照。
建议34:明智地使用内省可使程序更加高效和健壮
内省是对象揭示自己作为一个运行时对象的详细信息的一种能力。这些详细信息包括对象在继承树上的位置、对象是否遵循特定的协议,以及是否可以响应特定的消息。
建议35:尽量使用不可变性对象而非可变性对象
对象的不可变性可以保证对象在使用时不会被意外的改变。
1.尽量不要把可变对象存储到集合对象中,否则容易导致存储的可变对象被破坏或变成无效。
2.在开销上,可变对象比不可变对象要大,因为可变对象必须动态管理一个可变的辅助存储---在必要的时分配或解除分配内存块,所以比相应的不可变版本效率低。
3.不能确定对象是否可变,则将它当成不可变处理。
建议36:利用复合能巧妙地把两个类或两个对象融合
在OOP编程中有两个技术用于描述类与类或对象与对象之间的关系:一个是继承,另一个是复合。
面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构。
复合:通过在类中声明一个指向另一个类对象的指针作为实例变量,从而将这两个类进行复合。
在OC中所有对象之间的交互都是通过指针实现的。
建议37:使用类扩展来隐藏实现的细节
类扩展(Extension)作用:
1.能为某个类附加额外的属性、成员变量、方法声明
2.一般的类扩展写到.m文件中
3.一般的私有属性写到类扩展中
建议38:使用内联块应注意避免循环引用
内联:在类内定义的函数被默认成内联函数
块:block
引进弱引用来避免在内联块中直接引用self导致的循环引用。
建议39:利用类别把方法添加到现有的类
类别可以用于声明实例方法或类方法,但通常不适合用类别来声明额外的属性。在类别接口中包括一个属性声明的语法是有效的。但是不能在类别中声明一个额外的实例变量。这意味着,编译器不会合成任何实例变量,也不会将它合成任何属性访问器方法。
建议40:通过强弱引用来管理对象的所有权
http://www.jianshu.com/p/4a1d1921284b