高效OC读书笔记
Coder.L
记录前进的一个个足迹
展开
-
读书笔记之Delegate中的优化
我们在编写代理协议时,代理协议中的方法一般都是@optional的,代理方不一定实现了代理协议中的所有方法。那么我们在代理方上调用可选方法时候,最好提前使用类型信息查询方法来判断这个委托对象是否能够相应相关协议方法:if (delegate respondsToSelector:@selector(selector)) { [delegate selector];}用 respondsToSelector: 来判断代理方是否实现了相关的方法,如果实现了就调用,如果没有实现就不执行任何操作原创 2020-06-12 17:34:39 · 298 阅读 · 0 评论 -
第二条:在类的头文件中尽量少引入其他头文件
除非有必要,否则不要引入头文件。一般来说,应在某个类的头文件中使用向前声明来提交别的类,并在实现文件中引入那些类的头文件。这样做可以尽量降低类之间的耦合(coupling)。有时候无法使用向前声明,比如要声明某个类遵守一项协议。在这种情况下,尽量吧“该类遵守某协议”的这条声明移至“class-continuation分类”中。如果不行的话,就把协议单独放在一个头文件中,然后将其引入。向...原创 2019-07-29 22:17:55 · 301 阅读 · 0 评论 -
第三条:多使用字面量语法
应该使用字面量语法来创建字符串,数值,数组,字典。应该通过取下标操作来访问数组下标或是字典中的键所对应的元素。我们经常用到的有Foundation框架中的NSString,NSNumber,NSArray,NSDictionary。这条经验告诉我们要多使用字面量来创建上述这些类。比如说NSString,何为字面量创建呢?@"hello"; //这就是一个字面量NSStr...原创 2019-07-30 22:13:22 · 172 阅读 · 0 评论 -
第一条:了解OC语言
Objective-C使用动态绑定的消息结构;理解C语言的核心概念(内存模型和指针)有助于写好OC程序。动态绑定和多态多态:不同对象以自己的方式响应相同的消息的能力叫做多态。由于OC的动态特性,在OC中其实很少提及“函数”的概念,传统的函数一般在编译时就已经把参数信息和函数实现打包到编译后的源码中了,而在OC中最常使用的是消息机制。调用一个实例的方法,所做的是向该实例的指针发送...原创 2019-07-26 12:09:21 · 187 阅读 · 0 评论 -
第5条:用枚举表示状态选项
需要的知识:位运算详细见这里。程序中的所有数在计算机内存中都是以二进制的形式存储的。位运算就是直接对整数在内存中的二进制位进行操作。按位与 & :通常用于二进制的取位操作,例如一个数 and 1的结果就是取二进制的最末位。这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数为偶数,最末位为1表示该数为奇数。相同位的两个数字都为1,则为1;若有一个不为1,则为0。...原创 2019-08-04 23:12:14 · 586 阅读 · 0 评论 -
第四条:多用类型常量少用#define
这一条的要点最后再总结吧。先说说#define,当我们在代码中要定义一个常量的时候,我们可能会使用下面这种方式:#define whatEver 100这样的预处理指令会把代码中的相关定义内容全部替换成100,达到了我们想要的效果。那么还有没有更好的方式呢?我们可以使用这样的方式:static const int whatEver 100;这样写的好处:1.当我...原创 2019-08-01 11:24:54 · 255 阅读 · 0 评论 -
第六七八条:属性相关
在Java或C++中,对象布局在编译器(compile time)已经固定了,对象的关于成员变量的代码被编译器替换为“偏移量(offset)”,这个偏移量是“硬编码(hardcode)”,表示这个变量距离存放对象的内存区域的起始地址有多远。这种情况下,如果修改类定义之后就必须重新编译,否则就会出错。OC在这方面的优化是,把实例变量当做是一种存储偏移量所用的“特殊变量(special varia...原创 2019-08-11 22:37:59 · 118 阅读 · 0 评论