自动释放池和消息循环的关系

自动释放池

  • 运行循环/消息循环
    • 消息循环保证应用程序不退出
    • 消息循环在循环的捕捉消息(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];
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zok93

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值