iOS52个有效方法(一)

这本书是Matt Galloway著的Effective Objective-C 2.0 之 编写高质量iOS与OS X代码的52个有效方法, 全书共有52条建议, 分为7章, 所以我的系列也会有7个小结.


一.了解OC语言的起源
1.面向对象和动态特性
2.OC是C的”超集”, 可以直接在xcode中写C进行编码
3.理解C的内存模型, 有助于理解OC的内存模型(引用计数机制)
4.区分”指针变量”与”实例对象”的概念, 变量(指针)内存分配在stack上,由系统管理,而对象的内存分配在堆上,由自己管理(引用计数机制).
5.其实OC的类和对象,底层都是使用”C结构体+C指针”实现的.


二.在类的头文件中尽量少引入其他头文件
1.使用@class来”向前声明”(forward declaring)某个类
2.若A类import了B类, B类也import了A类, 将导致其中一个类无法被正确编译, 可以解析为”循环引用”.
3.当因为要遵循某Protocol而引入其头文件, 可以考虑放在.m文件中

三.多用字面量语法, 少用与之等价的方法
用于:NSNumber, 数组(copy/mutableCopy), 字典(copy/mutableCopy).
理由:简洁, 更安全!

关于OC中的复制用法http://blog.csdn.net/Mazy_ma/article/details/51899397

四.多用类型常量, 少用#define预处理指令
(先参考我之前的一篇博客define, const与extern)

使用const的好处:
1.包含了类型信息, 编译时会做语法检查
2.类型常量只占一份内存, 而define只是”文本替换”
3.使用const可以防止外部文件修改常量值!
如何使用const:
关于命名, 如果该常量只用于内部.m文件,请以”k”开头命名, 且使用static限制作用域避免与外界冲突,如:

static NSString const * kNOtification = @"xxxxxx";

如果该常量用于外部文件, 请以”类名”开头, 然后在.m文件中:

NSString const * MyClassNameNotification = @"yyyyyyy";

并且在.h文件中:

extern NSString const * EoCNOtification; 

这样,外界只用import头文件,就可以使用常量了.


五.用枚举表示状态,选项,状态码
1. 关于枚举的定义,参考我的文章枚举型typedef
2. 在switch分支中, 少用default分支,利于暴露代码中的bug.
3. NS_ENUM和NS_OPTIONS的区别, 我的理解是单选和多选
4. 使用typedef简化block名称

猜你喜欢

转载自blog.csdn.net/james15902085063/article/details/79517495