About AutoReleasePool

1、所有语言从内存管理上来说分两种,自动内存管理和非自动内存管理。
自动内存管理不需要开发者回收内存,语言会带垃圾回收机制,如java、c++/clr。
非自动内存管理需要开发者管理内存,原则是谁创建谁释放,如c++、Objective-c。
2、Objective-c除了谁创建谁释放的规则外又额外增加了一个autoreleasepool的概念,来帮助管理内存。
3、autoreleasepool是配合autorelease关键字使用的。例如:

NSMutableArray *array=[[[NSMutableArray alloc] init] autorelease];

4、autoreleasepool是可以嵌套的,是一个栈式结构,当创建一个autoreleasepool的时候,会在栈中加入一个哨兵对象,同时设该autoreleasepool为当前autoreleasepool,而后面凡事加了autorelease关键字的对象就都会push到栈中来管理,当autoreleasepool释放的时候,会将当前autoreleasepool创建之后所有的托管对象都发送release消息(注意不是释放,只是引用计数器减1)。
5、autoreleasepool释放的方式有两种,一种是autoreleasepool由用户创建同时块执行完毕会释放,另一种是系统的autoreleasepool,在每次Runloop休眠之前释放并重新创建。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容