本条要点:(作者总结) Objective-C 对象的生命期取决于其引用计数(参见第29条)。在 Objective-C 的引用计数架构中,有一项特性叫做“自动释放池”(autorelease pool)。释放对象有两种方式:一种是调用 release 方法,使其保留计数立即递减;另一种是调用 au ...
分类:
其他好文 时间:
2017-08-12 10:29:22
阅读次数:
212
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAutoreleasePools.html#//apple_ref/doc/uid/20000047-CJ ...
分类:
其他好文 时间:
2017-07-26 01:56:09
阅读次数:
186
介绍: ARC是自iOS 5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切 注意:ARC 是编译器特性,而不是 ios 运行时特性(除了weak指针系统),它 ...
分类:
其他好文 时间:
2017-07-22 11:06:44
阅读次数:
164
Autorelease机制是iOS开发人员管理对象内存的好伙伴。MRC中。调用[obj autorelease]来延迟内存的释放是一件简单自然的事;ARC下,我们甚至能够全然不知道Autorelease 系统就能管理好内存。而在这背后,objc和编译器都帮我们做了哪些事呢。一起来探究下Autorel ...
分类:
其他好文 时间:
2017-07-11 21:22:45
阅读次数:
216
自己主动释放池@autorelease面试频率可能会吧release还要高。 (1)在自己主动释放池@autoreleasepool{}中alloc一个对象后(如p1)。仍然须要用[p1 autorelease];不过这个语句和[p1 release];不同。后者表示把p1的retainCount- ...
分类:
移动开发 时间:
2017-06-17 18:25:46
阅读次数:
135
引用计数:通过给对象计数标志,来判断是否释放对象 注:只能释放自己持有的对象 如obj这个对象,并不是你所持有的对象,所以你无法进行释放 但是你可以通过retain来持有这个对象 什么样的对象不是你所持有的,比如你调用了 使用autorelease会让你的对象注册到autoreleasepool中, ...
分类:
其他好文 时间:
2017-05-02 23:40:35
阅读次数:
286
现在已经是 ARC 时代了,但是了解更多的 Objective-C 的内存管理机制仍然是十分必要的。一直以来我都弄不清楚 autorelease 的原理,后面看了很多资料,才慢慢了解到 autorelease 的原理。 下面我们来捋一捋这个变量的内存引用计数的变化: 1.当使用 [NSString ...
分类:
其他好文 时间:
2017-04-20 10:16:02
阅读次数:
226
ARC(是编译器特性)ARC是自iOS5之后增加的新特性,完全消除了手动管理内存的烦琐,编译器会自动在适当的地方插入适当的retain、release、autorelease语句。你不再需要担心内存管理,因为编译器为你处理了一切ARC是编译器特性,而不是iOS运行时特性,它也不是类似于其它语言中的..
分类:
其他好文 时间:
2017-04-14 10:15:54
阅读次数:
194
拿个自己写Layer的例子 该引用计数变化流程 GeneralMenuWnd在create()的时候,其_referenceCount 为1,并在create()的时候autorelease(); addChild()的时候,其_referenceCount变为2; 当该帧执行完后,_referen ...
分类:
其他好文 时间:
2017-04-07 21:34:31
阅读次数:
454
1.内存管理原则 苹果官方规定的内存管理原则 谁创建谁release : 如果你通过alloc、new、copy或mutableCopy来创建一个对象,那么你必须调用release或autorelease 谁retain谁release: 只要你调用了retain,就必须调用一次release 总结 ...
分类:
其他好文 时间:
2017-03-19 17:37:29
阅读次数:
166