不明觉厉iOSiOS面试

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

2016-06-06  本文已影响3823人  千煌89

本篇是我阅读《Effective Objective-C 2.0》的摘要与总结,如有疑问,,我会附上例子解释。

一、熟悉Objective-C

  1. 了解Objective-C语言的起源
  1. 在类的头文件中尽量少引入其他头文件
  1. 多用literal语法,少用与之等价的方法
    比如多用NSArray *array = @[@1,@2];少用NSArray *array = [NSArray arrayWithObjects:@1,@2,nil];
  1. 多用类型常量,少用#define预处理指令
  1. 用枚举表示状态、选项、状态码

二、对象、消息、runtime

  1. 理解“属性”这一概念
  1. 在对象内部尽量直接访问实例变量
  1. 理解“对象等同性”这一概念
  1. 以“类族模式”隐藏实现细节
  1. 在既有类中,使用关联对象(Associated Object)存放自定义数据
  1. 理解objc_msgSend的作用
  1. 理解消息转发机制
  1. 用method swizzling调试黑盒方法
  1. 理解“类对象”的用意

三、接口与API设计

  1. 用前缀避免命名空间冲突
  1. 提供“全能初始化方法”
  1. 实现description方法
  1. 尽量使用不可变对象
  1. 使用清晰而协调的命名方式
  1. 为私有方法名加前缀
  1. 理解Objective-C错误模型
  1. 理解NSCopying协议

四、协议与分类

  1. 通过委托与数据源协议进行对象间通信
  1. 将类的实现代码分散到便于管理的数个分类之中
  1. 总是为第三方类的分类名称加前缀
  1. 使用class-continuation分类隐藏实现细节
  1. 通过协议提供匿名对象

五、内存管理

  1. 理解引用计数
  1. 以ARC简化引用计数
  1. 在dealloc方法中只释放引用并解除监听
  1. 编写异常安全代码时留意内存管理问题
  1. 以弱引用避免重复引用
  1. 以自动释放池块降低内存峰值
  1. 用“僵尸对象”调试内存管理问题
  1. 不要使用retainCount

六、block与GCD

  1. 理解block的概念
  1. 为常用的block类型创建typedef
  1. 用handler块降低代码分散程度
  1. 用block引用其所属对象时不要出现循环引用
  1. 多用派发队列,少用同步锁
  1. 多用GCD,少用performSelector系列方法
  1. 掌握GCD及操作队列的使用时机
  1. 通过Dispatch Group机制根据系统资源状况来执行任务
  1. 使用dispatch_once来执行只需运行一次的线程安全代码
  1. 不要使用dispatch_get_current_queue

七、系统框架

  1. 熟悉系统框架
  1. 多用块枚举,少用for循环
  1. 队自定义其内存管理语义的collection使用无缝桥接
  1. 构建缓存是选用NSCachae而非NSDictionary
  1. 精简initialize与load的实现代码
  1. 别忘了NSTimer会保留其目标对象
上一篇下一篇

猜你喜欢

热点阅读