# Autorelease Pool
自动释放池(对象引用计数自动处理器): 是OC中的一种内存自动回收机制,支持Cocoa的引用计数的内存管理系统的对象。
# 原理
autorelease
本质上就是延迟调用release
。
配合Runloop
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString * nsstring;
char * cstring = "Hello CString";
// 这一行代码就是在给pool发送retain消息了
nsstring = [NSString stringWithUTF8String:cstring];
[pool release];
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 我个人的看法
从我工作时,都是ARC (opens new window)/Swift-ARC (opens new window)。
仅demo中,为了了解MRC (opens new window)会写一些。
# 官方对于 自动释放池 的说法
# 1. Apple - NSAutoreleasePool (opens new window)
# 2. Apple - 高级内存管理编程指南 (opens new window) 2012-07-17
应用程序内存管理是在程序运行时分配内存,使用它并在完成后释放它的过程。编写良好的程序将使用尽可能少的内存。在Objective-C中,它也可以看作是在许多数据和代码之间分配有限内存资源所有权的一种方法。完成本指南的工作后,您将拥有显式管理对象生命周期并在不再需要它们时释放它们的知识,从而可以管理应用程序的内存。
尽管通常在单个对象级别上考虑内存管理,但实际上您的目标是管理对象图。您要确保内存中没有超出实际需要的对象。
# 3. Apple - 过渡到ARC发行说明 (opens new window)
# 参考资料
- csdn - iOS 缓存池 对象重复使用 (opens new window)
- csdn - iOS 自动释放池内存实现 (opens new window) 2016-10-11 00:35:53
- csdn -
iOS---NSAutoreleasePool自动释放原理及详解
(opens new window) 2016-08-03 10:53:32 - csdn -
Objective-C Autorelease Pool 的实现原理
(opens new window) 2015-06-24 15:03:00 - csdn - iOS 自动释放池一个小的面试题引发的简单学习 (opens new window) 2019-04-29 09:54:51
- csdn -
iOS 运行循环-RunLoop 和 自动释放池-autoreleasepoo 笔记
(opens new window) 2017-06-28 23:16:35 - csdn - ~推荐看~
iOS AutoreleasePool(自动释放池子)的原理和实现
(opens new window) 2020-05-12 23:09:06 推荐看 - csdn -
ios自动释放池(autoreleasepool)
(opens new window) 2013-03-25 09:18:57