本文共 775 字,大约阅读时间需要 2 分钟。
自动释放池
- 运行循环/消息循环
- 消息循环保证应用程序不退出
- 消息循环在循环的捕捉消息(UI事件),然后执行消息对应的操作
- 1.创建:运行循环,检测到事件并启动后,就会创建自动释放池
- 2.销毁:一次完整的运行循环结束之后,就会被销毁
运行循环和自动释放池的关系
- 1.程序启动->开启运行循环
- 2.启动之后等待事件的输入
- 3.运行循环检测到触摸事件
- 4.创建事件->准备执行事件的对应方法
- 5.在事件对应的方法执行之前->会为本次事件创建一个自动释放池
- 事件对应的方法,自动释放池创建好了之后,方法对应的代码开始执行
- 在事件对应的方法执行时->生成的临时变量对象都放到自动释放池中
- 6.事件对应的方法执行结束之前,会自动释放掉自动释放池中的变量
什么时候需要手动创建自动释放池
- 在一个几千万次的循环中,不断的创建临时变量,需要在循环的一开始就创建自动释放池,因为for循环的速度很快,CPU来不及处理内存
- (void)loop{ long long largeNumber = 10000000; // 在循环中,如果创建了大量的临时变量,需要在循环的一开始就创建自动释放池 // for循环的速度很快,CPU来不及处理内存 for (int i = 0; i < largeNumber; ++i) { // 每循环一次就倾倒一次自动释放池 @autoreleasepool { NSString *str = @"Hello World"; str = [str stringByAppendingFormat:@" - %d", i]; str = [str uppercaseString]; } }}
转载地址:http://nfkii.baihongyu.com/