摘要:
本条要点:(作者总结) 自动释放池排布在栈中,对象收到 autorelease 消息后,系统将其放入最顶端的池里。 合理运用自动释放池,可降低应用程序的内存峰值。 @autoreleasepool 这种新式写法能创建出更为轻便的自动释放池。 Objective-C 对象的生命期取决于其引用计数(参见 阅读全文
摘要:
本条要点:(作者总结) 将某些引用设为 weak,可避免出现 “保留环”。 weak 引用可以自动清空,也可以不自动清空。自动清空(autonilling)是随着 ARC 而引入的新特性,由运行期系统来实现。在具备自动清空功能的弱引用上,可以随意读取其数据,因为这种引用不会指向已经回收过的对象。 对 阅读全文
摘要:
本条要点:(作者总结) 捕获异常时,一定要注意将 try 块所创立的对象清理干净。 在默认情况下,ARC 不生成安全处理异常所需的清理代码。开启编译器标志后,可以生成这种代码,不过会导致应用程序变大,而且会降低运行效率。 许多时下流行的编程语言都提供了 “异常”(exception)这一特性。纯 C 阅读全文
摘要:
本条要点:(作者总结) 在 dealloc 方法里,应该做的事情就是释放指向其他对象的引用,并取消原来订阅的“键值观测”(KVO)或 NSNOtificationCenter 等通知,不要做其他事情。 如果对象持有文件描述符等系统资源,那么应该专门编写一个方法来释放此种资源。这样的类要和其使用者约定 阅读全文
摘要:
本条要点:(作者总结) 有 ARC 之后,程序员就无须担心内存管理问题了。使用 ARC 来编程,可省去类中的许多 “样板代码”。 ARC 管理对象生命期的办法基本上就是:在合适的地方插入 “保留” 及 “释放”操作。 在 ARC 环境下,变量的内存管理语义可以通过修饰符指明,而原来需要手工执行 “保 阅读全文