摘要: 49、在上文5(1)中提到:当NSObject对象的retainCount减为0之后,就不要再去打印它的retainCount了,有可能导致crash。 为了验证这个说法,可以通过初始化一个对象并释放它,然后多次打印这个对象的retainCount来测试。 测试结果有很多种情况,取3种情况展示如下: 阅读全文
posted @ 2016-08-18 16:04 杨淳引 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 41、在讨论property和内存管理相关的内容前,先回顾一下什么是property: (1)、首先,如果一个类没有定义property,能否访问它的实例变量?使用以下代码来验证一下。 建立一个类ShYBook,类内只有一个实例变量pageCount,如下: 使用“->”运算符来访问到它的实例变量, 阅读全文
posted @ 2016-08-18 15:57 杨淳引 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 30、有时候你可能需要用到一些Core Foundation对象(比如CFArrayRef或者CFMutableDictionaryRef),对于这些对象,编译器是不会自动管理它们的生命周期的,你需要使用CFRetain或CFRelease之类的方法来管理它们的持有情况(ownership)。 如果 阅读全文
posted @ 2016-08-18 15:00 杨淳引 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 6、ARC仍然遵循MRC的内存管理方式,4个基本规则在ARC下仍然是有效的,区别只在于:MRC模式下需要手动键入retain、release等方法来遵循这些规则,ARC环境下则是编译器自动在适当位置插入retain、release等方法去遵循这些管理规则,你不再需要去调用retain、release 阅读全文
posted @ 2016-08-18 14:43 杨淳引 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1、内存管理有4个基本规则,这些规则不只是在MRC模式下有效,在ARC模式下也是同样有效的。区别只在于在MRC模式下要手动遵循这些规则,在ARC模式下编译器会自动处理。这4个基本规则如下: (1)、自己会持有自己生成的对象(You own any object you create): 使用“all 阅读全文
posted @ 2016-08-18 14:15 杨淳引 阅读(140) 评论(0) 推荐(0) 编辑