1. 了解Objective-C语言的起源
2. 在类的头文件中尽量少引入其他头文件
3. 多用字面量语法,少用与之等价的方法
例子:
4. 多用类型常量,少用#define
预处理指令
5. 用枚举表示状态,选项,状态码
6. 理解属性这一概念
7. 在对象内部尽量直接访问实例变量
8. 理解“对象等同性”这一概念
9.以“类族模式”隐藏实现细节
10. 在既有类中使用关联对象存放自定义数据
11. 理解objc_msgSend的作用
12. 理解消息转发机制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O8DMWib4-1662015588609)(https://gitee.com/Lcmzy89/drawing-bed/raw/master/image/20220629161133.png “消息转发”)]
13. 用“方法调配技术”调试“黑盒方法”
14. 理解“类对象”的用意
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X3HLwuQx-1662015588609)(https://gitee.com/Lcmzy89/drawing-bed/raw/master/image/111.png “objc_class的结构体”)]
15. 用前缀避免命名空间冲突
16. 提供全能初始化方法
17. 实现description方法
18. 尽量使用不可变对象
19. 使用清晰而协调的命名方式
20. 为私有方法名加前缀
21. 理解Objective-C错误模型
22.理解NSCopying协议
23.通过委托与数据源协议进行对象间通信
24.将类的实现方法分散到便于管理的各个分类之中
25.总是为第三方类的分类名称加前缀
26.勿在分类中声明属性
27.使用“class-continuation分类”隐藏实现细节
28.通过协议提供匿名对象
29.理解引用计数
30.以ARC简化引用计数
31.在delloc方法中只释放引用并解除监听
32.编写“异常安全代码”时留意内存管理问题
33.以弱引用避免保留环
34.以“自动释放池”降低内存峰值
35.用“僵尸对象”调试内存管理问题
36.不要使用retainCount
37.理解“块”这一概念
38.为常用块类型创建typedef
39.用handler块降低代码分散程度
40.用块引用其所属对象时不要出现保留环
41.多用派发队列,少用同步锁
** 在队列中,栅栏块必读单独执行,不能与其他块并行。只对并发队列有意义。并发队列如果发现接下来要处理的块是个栅栏块,那么就一直要等当前的所有并发块都执行完毕,才会单独执行这个栅栏块。可以使用栅栏块来实现属性的Set方法。对属性的读取操作依然可以并行执行。
42.多用GCD,少用performSelector系列方法
43.掌握GCD及操作队列的使用时机
44.通过Diapatch Group机制,根据系统资源状况来执行任务
45.使用dispatch_once来执行只需运行一次的线程安全代码。
46.不要经常使用dispatch_get_current_queue
47.熟悉系统框架
48.多用块枚举,少用for循环
49.对自定义其内存管理语义的collection使用无缝桥接
50.构建缓存时选用NSCache而非NSDictionary
51.精简initialize与load的实现代码
52.别忘了NSTimer会保留其目标对象
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。