编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记

这本书年初刷完,感觉不错,介绍了很多小点,都是平日不怎么关注的.

第1章 熟悉Objective-C

这章没什么好介绍

第1条:了解Objective-C语言的起源

第2条:在类的头文件中尽量少引入其他头文件

第3条:多用字面量语法,少用与之等价的方法

第4条:多用类型常量,少用#define预处理指令

要理解为啥要少用#define预处理指令. 然后具体用哪个, 自己定吧

第5条:用枚举表示状态、选项、状态码

第2章 对象、消息、运行期

第6条:理解"属性"这一概念

属性: 变量 + 方法 + 属性特质

第7条:在对象内部尽量直接访问实例变量

性能的一些优化

第8条:理解"对象等同性"这一概念

第9条:以"类族模式"隐藏实现细节

工厂模式

第10条:在既有类中使用关联对象存放自定义数据

类别里加属性

第11条:理解objc_msgSend的作用

传递消息

第12条:理解消息转发机制

动态方法解析: 向当前类发送 resolveInstanceMethod: 检查是否动态向该类添加了方法

快速消息转发: 检查该类是否实现了 forwardingTargetForSelector: 若实现了则调用这个方法. 若该方法返回值对象非nil或非self, 则向该返回对象重新发送消息.

标准消息转发: runtime发送 methodSignatureForSelector:, 消息获取Selector对应的方法签名. 返回值非空则通过forwardInvocation: 转发消息,返回值为空则向当前对象发送doesNotRecognizeSelector: 程序崩溃退出

第13条:用"方法调配技术"调试"黑盒方法"

就是method swizzling啦.不是很推荐滥用.

第14条:理解"类对象"的用意

其实就是 c-oop

第3章 接口与API设计

第15条:用前缀避免命名空间冲突

第16条:提供"全能初始化方法"

第17条:实现description方法

第18条:尽量使用不可变对象

这个不注意还真的会出问题

第19条:使用清晰而协调的命名方式

第20条:为私有方法名加前缀

写多了就知道了很多不做,迟早会遇到问题,没遇到是应为写的太少.

第21条:理解Objective-C错误模型

第22条:理解NSCopying协议

第4章 协议与分类

第23条:通过委托与数据源协议进行对象间通信

第24条:将类的实现代码分散到便于管理的数个分类之中

第25条:总是为#### 第三方类的分类名称加前缀

第26条:勿在分类中声明属性

第27条:使用"class-continuation分类"隐藏实现细节

第28条:通过协议提供匿名对象

有鸭子样的就是鸭子

第5章 内存管理

第29条:理解引用计数

内存管理的三种基本方式之一

第30条:以ARC简化引用计数

用arc让编程更加简洁

第31条:在dealloc方法中只释放引用并解除监听

第32条:编写"异常安全代码"时留意内存管理问题

第33条:以弱引用避免保留环

第34条:以"自动释放池块"降低内存峰值

第35条:用"僵尸对象"调试内存管理问题

第36条:不要使用retainCount

第6章 块与大中枢派发

第37条:理解"块"这一概念

闭包(在函数对象中,将局部变量这一环境封闭起来的结构)在oc下的具体实现

第38条:为常用的块类型创建typedef

第39条:用handler块降低代码分散程度

第40条:用块引用其所属对象时不要出现保留环

#define DEF_WEAKSELF                        __weak __typeof(self) weakSelf = self;
#define DEF_STRONGSELF                      __strong __typeof(weakSelf) self = weakSelf;

第41条:多用派发队列,少用同步锁

第42条:多用GCD,少用performSelector系列方法

第43条:掌握GCD及操作队列的使用时机

第44条:通过Dispatch Group机制,根据系统资源状况来执行任务

第45条:使用dispatch_once来执行只需运行一次的线程安全代码

第46条:不要使用dispatch_get_current_queue

当心死锁

第7章 系统框架

第47条:熟悉系统框架

第48条:多用块枚举,少用for循环

第49条:对自定义其内存管理语义的collection使用无缝桥接

第50条:构建缓存时选用NSCache而非NSDictionary

第51条:精简initialize与load的实现代码

第52条:别忘了NSTimer会保留其目标对象

时间: 2024-10-18 14:47:01

编写高质量的iOS代码--Effective Objective-C 2.0 读书笔记的相关文章

编程精粹--编写高质量C语言代码(6):对程序进行逐条跟踪

发现程序错误最好的方法就是执行程序.在程序执行过程中,我们利用我们的眼睛,或者通过我们编写的断言和子系统一致性检查等自动测试的工具来发现错误.虽然断言和子系统检查都很有用,但是如果程序员事先没有想到应该对某些问题进行检查,那么也就无法保证程序没有问题. 程序员可以在代码中设置断点,一步步跟踪代码的运行,观察输入变为输出的过程.程序员测试其程序最好的方法就是对程序进行逐条跟踪,对中间的结果进行认真的查看.对代码进行逐条跟踪是需要时间的,但它同编码比,只是一小部分.一旦逐条地跟踪代码成为习惯后,我们

编程精粹--编写高质量C语言代码(3):自己设计并使用断言(二)

接着上一遍文章<<编程精粹--编写高质量C语言代码(2):自己设计并使用断言(一)>>,继续学习如何自己设计并使用断言,来更加容易,更加不费力地自动寻找出程序中的错误. 首先看一个简单的压缩还原程序: byte* pbExpand(byte *pbFrom,byte *pbTo,size_t sizeFrom) { byte b, *bpEnd; size_t size; pbEnd=pbFrom+sizeFrom; while(pbFrom<pbEnd) { b=*pbFr

编程精粹--编写高质量C语言代码(1):假想编译程序

编译程序仅仅能查找出程序的语法错误,而对于"数组越界访问","对空指针解引用"等错误,编译程序是束手无策的.同时我们知道测试人员所使用的黑箱测试方法所能做的只是往程序里填数据,并看它弹出什么.这就决定了对程序错误的检测可能需要点运气. 假如编译程序能够检测出"数组越界访问","差一错误","空指针"等等错误,那么编写无错代码其实就要简答多了. 所以我们需要一个思维转变: 不要光依赖黑箱测试方法,还应该试着去

编程精粹--编写高质量C语言代码(4):为子系统设防(一)

通常,子系统都要对其实现细节进行隐藏,在进行细节隐藏的同时,子系统为用户提供了一些关键入口点.程序员通过调用这些关键的入口点来实现与子系统的通信.因此如果在程序中使用这样的子系统并且在其调用点加上了调试检查,那么不需要花费多少力气就可以进行许多错误检查. 当子系统编写完成后,要问自己:"程序员什么情况下会错误地使用这个子系统,在这个子系统中怎样才能自动检查出这些问题?"在这篇文章中,将讲述一些用来肃清子系统中错误的技术.使用这些技术,可以免除许多麻烦.本章将以C的内存管理程序为例,但所

编写高质量JAVA程序代码的建议

--------------------------------------------------------------------------------------------------- 前言:原著<改善JAVA程序的151个建议>有151个建议,我在拜读的过程根据自己的理解合并了其中的几个,并将每个建议的核心要义进行了一次纯手工提炼,以方便想阅读这本书的同行能够更快的掌握这本书的所有核心内容. -------------------------------------------

编写高质量的 HTML 代码

编者寄言: 本文主要为编者读书笔记,在文章里面很多话是掺杂了编者自己的见解,如果有哪里出现错误或者用词不严谨,请友善留言,编者会及时去更改. 本文很多地方只是简单说了一下应该注意的地方,具体代码部分请自行上网查找,给您带来的困扰,非常抱歉. 这篇文章的主要目的是给一些自学 以及 对 HTML 5刚刚入门的朋友提供一些从编码习惯方面的帮助,如果您觉得这篇文章对您有帮助,请给编者点赞留言,鄙人感激不尽. 李鹏 2016年05月17日10:27:45 第零章 前言 web 前端开发是从网页制作演变而来

iOS应用开发最佳实践:编写高质量的Objective-C代码

本文转载至 http://www.cocoachina.com/industry/20131129/7445.html 点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问,其他的情况使用方括号标记语法. 良好的风格 : view.backgroundColor = [UIColor orangeColor]; [UIApplication sha “” 阅读器 本文由“海水的味道"编译 点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问

编写高质量的iOS与OS X代码的52个有效方法(一)

第一条:了解Objective-C 语言的起源 都知道OC是由Smalltalk演化而来. 消息与函数调用见的区别: 使用消息结构的语言,其运行是所应执行的代码有运行环境来决定,而使用函数调用的语言,则由编译器决定. 要点: 1.OC是C语言的超集,OC使用动态绑定的消息结构,也就是说,在运行时才会检查对象类型.接受一条消息之后,究竟应执行何种代码,由运行期环境而非编译器来决定. 理解C语言的核心概念有助于写好OC程序,尤其要掌握内存模型与指针. 第二条: 在类的头文件中尽量少引入其他头文件 O

编写高质量的Objective-C代码

点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问,其他的情况使用方括号标记语法. 良好的风格: view.backgroundColor = [UIColor orangeColor]; [UIApplication sharedApplication].delegate; 不良的风格: [view setBackgroundColor:[UIColor orangeColor]]; UIApplication.sharedApplication.delegate