博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
自动释放池和消息循环的关系
阅读量:4086 次
发布时间:2019-05-25

本文共 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/

你可能感兴趣的文章
SQL join
查看>>
JavaScript实现页面无刷新让时间走动
查看>>
CSS实例:Tab选项卡效果
查看>>
前端设计之特效表单
查看>>
前端设计之CSS布局:上中下三栏自适应高度CSS布局
查看>>
Java的时间操作玩法实例若干
查看>>
数字游戏
查看>>
JavaScript:时间日期格式验证大全
查看>>
pinyin4j:拼音与汉字的转换实例
查看>>
XML工具代码:SAX从String字符串XML内获取指定节点或属性的值
查看>>
时间日期:获取两个日期相差几天
查看>>
责任链模式 Chain of Responsibility
查看>>
高并发与大数据解决方案概述
查看>>
解决SimpleDateFormat线程安全问题NumberFormatException: multiple points
查看>>
MySQL数据库存储引擎简介
查看>>
处理Maven本地仓库.lastUpdated文件
查看>>
Windows操作系统安装MySQL解压版
查看>>
Java并发编程之Wait和Notify
查看>>
自定义git命令实现一步提交代码到仓库
查看>>
让谁搭车?
查看>>