Effective Objective-C 2.0 学习笔记(1

2017-07-03  本文已影响0人  sharpdev

本文是《Effective Objective-C 2.0 -编写高质量 iOS 与 OS X 代码的52个有效方法》一书的读书笔记. 该书提出来了52条编写代码的建议, 并进行分类及详细阐述, 本文引用了书中的各章小节, 并按自己的理解做出了适当拓展, 希望可以尽量完整的体现出书中的关键信息.

熟悉 Objective-c

  1. 类的头文件中尽量少引入其它头文件
    使用@class 关键字进行前向声明, 在头文件定义类时可以不用引 用相关头文件, 在实现代码中再引入, 可以提高编译效率, 还可以防止循环引用的发生.(继承与非委托用途的协议除外)
  2. 多用字面量语法
    比调用构函数更简明直观
  3. 多用类型常量,少用#define预处理指令
    使用static const 关键字定义带有类型信息的常量(编译时还是会像#define 一样替换, 但是带有了类型信息), 私有的常量应该定义的实现文件中.
    使用 extern 关键字定义全局常量(会放在全局符号表中), 能常用类名做前缀, 在头文件中声明, 在实现文件中 定义值
  4. 用枚举表示状态, 选项, 状态码

对象、消息、运行时相关

  1. 理解 property
  1. 在对象内部尽量直接访问实例变量
  1. 理解“对象等同性”这一概念
  1. 以“类族模式”隐藏实现细节
  1. 在既有类中,使用关联对象(Associated Object)存放自定义数据
    //需要引用头文件: #import <objc/runtime.h>
    void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy);
    id objc_getAssociatedObject(id object, const void *key); 
    void objc_removeAssociatedObjects(id object);。
  1. 理解objc_msgSend的作用
  1. 理解消息转发机制
  1. 用method swizzling调试黑盒方法
  1. 理解“类对象”的用意
  - (BOOL)isMemberOfClass:(Class)aClass; //判断对象是否为某个特定类的实例
  - (BOOL)isKindOfClass:(Class)aClass; //判断对象是否为某个特定类或派生类的实例
上一篇 下一篇

猜你喜欢

热点阅读