iOS 运行循环-RunLoop 和 自动释放池-autoreleasepoo 笔记

来源:互联网 发布:北大历史系考研知乎 编辑:程序博客网 时间:2024/06/16 06:22

//联系人:石虎  QQ: 1224614774昵称:嗡嘛呢叭咪哄


一、"运行循环-RunLoop"的作用


  最主要的作用:保证程序不退出->主线程始终存在!

  除此之外运行循环还负责监听所有的事件,包括:手势触摸,时钟触发,网络加载数据完成


  特性:没有事件的时候,会休眠(省电),一旦监听到事件,会立即响应


  特点:开发几乎不用,但是概念很重要


  每一个线程都有一个runloop,但是只有主线程的runloop会启动



二、"自动释放池-autoreleasepool"的作用


 -延迟释放:哪些对象是会延迟释放的?

 -所有延迟释放的对象,在出了作用域之后,会被添加到最新创建的自动释放池中,但是不会被立即销毁!

 -"自动释放池被销毁"时会向池中所有对象发送release消息,可以释放所有的延迟释放的对象!


 问题:自动释放池什么时候被销毁?



 问题:自动释放池在ARC中工作吗?

 答案:必须要工作!编译器在编译的时候,会根据代码自动添加retain,release,autorelease


 经过多年的测试,ARC的性能比MRC要好!


谢谢!!!


原创粉丝点击