iOS-《编写高质量代码》笔记-第五章 实现

简介: 建议33:使用类别把类的实现拆分成不同的文件类别可以访问其继承的类的实例变量,类别的方法具有最高的优先级类别,可以分散到不同的文件中,甚至不同的框架中。

建议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

目录
相关文章
|
6月前
|
移动开发 安全 数据安全/隐私保护
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
iOS 全局自动化代码混淆工具!支持 cocoapod 组件代码一并混淆
|
6月前
|
移动开发 前端开发 数据安全/隐私保护
【工具】iOS代码混淆工具-iOS源码混淆
【工具】iOS代码混淆工具-iOS源码混淆
72 1
|
6月前
|
移动开发 前端开发 安全
最强大的 iOS 应用源码保护工具:Ipa Guard,保护你的商业机密代码
最强大的 iOS 应用源码保护工具:Ipa Guard,保护你的商业机密代码
|
1月前
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
6月前
|
缓存 开发工具 iOS开发
优化iOS中Objective-C代码调起支付流程的速度
优化iOS中Objective-C代码调起支付流程的速度
104 2
|
6月前
|
iOS开发
iOS自动混淆测试处理笔记
iOS自动混淆测试处理笔记
27 0
|
6月前
|
移动开发 安全 数据安全/隐私保护
iOS 代码混淆和加固技术详解
iOS 代码混淆和加固技术详解
|
6月前
|
iOS开发
  iOS 自动混淆测试处理笔记
  iOS 自动混淆测试处理笔记
|
6月前
|
移动开发 前端开发 数据安全/隐私保护
iOS 代码混淆 - 从入门到放弃
iOS 代码混淆 - 从入门到放弃
|
6月前
|
移动开发 安全 前端开发
iOS代码混淆工具
iOS代码混淆工具
107 1