美文网首页
Effective Objective-C2.0读书笔记 开篇

Effective Objective-C2.0读书笔记 开篇

作者: 鸣2010 | 来源:发表于2015-04-20 11:36 被阅读273次

    编写高质量iOS和OS X代码的52个有效方法

    本篇博客主要是自己的一些笔记,如果要了解详细,还请阅读书本。推荐!!!

    第一章笔记  (书中提到的class-continuation分类是指.m文件的私有扩展,并非category)


    1. 尽量用@class来做”向前声明”,在需要的时候import

    减少使用者引入的头文件数量,如果引用的头文件用不到,会增加编译时间;

    import还有可能导致循环引用的问题

    2. 协议的遵守最好放在类的私有扩展当中

    3. 关于oc中的协议

    和java中的接口类似  ,用于对象之间相互通信的同时,又能解耦;

    委托模式的遵旨:定义一套接口,代理对象遵守此接口。原来对象就可以给代理回传一些信息,也可以在发生相关事件时通知代理;

    此模式可以讲数据和业务逻辑解耦; 例如 “数据源” 和 “委托”  。

    声明代理用weak,避免保留环的形成;因为一般情况代理对象会持有原对象;

    设计方法时一般将原来对象传给代理; 这样代理能根据实例执行不同的代码;

    缓存委托对象,如果协议中的方法都是可选的,那么程序中可能会有一大堆, responseToSelector,这时候可以把某个委托对象是否能够响应某个协议缓存起来;优化程序效率;

    自己总结:用该模式来实现不同对象间的异步通信;比如网络请求,不知道什么时候回来;一些UI事件不知道什么时候触摸时;该模式在通信时是低耦合的,代理一般是id;

    4. 多用字面量 少用与之等价的方法

    多用NSString *someStr = @"abcd"; 少用NSString *someStr2 = [NSString stringWithFormat....];NSNumber NSArray NSDictionary都是如此

    代码整洁 便于阅读  没有多余的语法成分

    数组用字面量的好处:

    id obj1 = /…/

    id obj2 = /…/

    id obj3 = /…/

    NSArray *arrA = [NSArray arrayWithObjects: obj1, obj2, obj3, nil];

    NSArray *arrB = @[obj1, obj2, obj3]

    // 上边的代码中如果obj2是nil,arrB会抛出异常,原因是数组中有空对象;而arrA数组中只有obj1一个对象,原因是通过方法创建数据,结束标志就是nil;

    局限性: 利用字面量创建可变版本时候需要拷贝一份

    NSMutableArray *mutable = [@[@1, @2, @3] mutableCopy]

    5. 多用类型常量 少用#define

    利用static和extern来管理作用域

    // .h文件

    extern NSString *const SomeStr;

    // .m 文件

    NSString *const someStr = @"someStr";

    6. 用枚举表示状态 选项 状态码  

    每个枚举值可以用1<<0, 1<<1,来赋值;这样用"按位或操作符"组合多个枚举的二进制值;例如系统的UIViewAutoresizing.

    如果用枚举表示状态机,在switch语句中最好不要有default语句.

    相关文章

      网友评论

          本文标题:Effective Objective-C2.0读书笔记 开篇

          本文链接:https://www.haomeiwen.com/subject/naayfttx.html