NSRunloop和thread什么关系?一个 thread中必须有一个autoreleasepool吗?

每个thread中都有一个默认的NSRunloop,主线程中的NSRunloop默认是开启的,其余线程的NSRunloop默认是未开启的(包括自己通过NSThread创建的线程,以及通过get_gloabal_queue获取的线程)。

一个thread中不是必须要有autoreleasepool,而且默认也没有autoreleasepool。

一个UI事件,一个timer,一个系统delegate都称之为runloop,系统为每个runloop分配一个autoreleasepool。
一个thread中如果拥有一个runloop,则这个thread中就包含一个autoreleasepool。

为了做到及时回收内存,以及避免不必要的内存泄漏,自己手动开辟的子线程最好手动添加autoreleasepool。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、什么是runloop 字面意思是“消息循环、运行循环”。它不是线程,但它和线程息息相关。一般来讲,一个线程一次...
    WeiHing阅读 12,546评论 11 111
  • runtime 和 runloop 作为一个程序员进阶是必须的,也是非常重要的, 在面试过程中是经常会被问到的, ...
    SOI阅读 21,992评论 3 63
  • runtime 和 runloop 作为一个程序员进阶是必须的,也是非常重要的, 在面试过程中是经常会被问到的, ...
    made_China阅读 4,954评论 0 7
  • 基本概念 进程 进程是指在系统中正在运行的一个应用程序,而且每个进程之间是独立的,它们都运行在其专用且受保护的内存...
    小枫123阅读 4,494评论 0 1
  • 1. 昨晚快到24:00的时候才睡觉,这个点儿休息已经有一段时间了。人的习惯真是可怕,好习惯,任凭你花费多少时间和...
    大小简阅读 2,990评论 0 0

友情链接更多精彩内容