四十七、熟悉系统框架
1、ARC只负责Objective-C对象,所以使用CoreFoundation等C语言框架,需要注意内存管理问题。
四十八、多用块枚举,少用for循环
1、遍历有for循环、NSENumerator遍历、快速遍历和块枚举,块枚举可通过GCD并发执行遍历操作
四十九、对自定义其内存管理语义的collection使用无缝桥接
1、通过无缝桥接技术,可以在Foundation框架中的Objective-C对象与CoreFoundation框架中的C语言数据结构之间来回转换
五十、构建缓存时选用NSCache而非NSDictionary
1、当系统资源将要耗尽时,NSCache可以自动删减缓存,而且还会先行删除最久未使用的对象
2、NSCache不会拷贝而是保留Key,所以在Key不支持copy的情况下,使用较Dictionary方便
3、NSCache是线程安全的
4、可以给NSCache对象设置上限(不严格执行),用以限制缓存中的对象总个数及总成本
5、将NSPurgeableData与NSCache搭配使用,可实现自动清除数据的功能
五十一、精简initillize与load的实现代码
1、在加载阶段,类和分类会调用load方法且仅调用一次,类的load方法要比分类中的load方法先调用
2、load方法不参与覆写机制
3、在执行子类的load方法之前,必定会先执行所有超类的load方法
4、在load方法中使用其他类是不安全的
5、应用程序必须阻塞并等待所有类的load方法都执行完毕才能继续
6、initialize方法会在程序首次访问该类之前调用且仅调用一次
7、initialize方法参与覆写机制
8、initialize方法只应该用来设置内部数据
五十二、NSTimer会保留其目标对象
1、计时器放在运行循环里,才能正常触发任务
2、计时器会保留其目标对象,等到自身失效时再释放此对象。调用invalidate方法可以令计时器失效,原因如下图说明:
网友评论