美文网首页ios面试题
什么时间会创建自动释放池?

什么时间会创建自动释放池?

作者: 充满活力的早晨 | 来源:发表于2018-04-10 10:15 被阅读28次

A:运行循环检测到事件并启动后,就会创建自动释放池。

B:子线程的 runloop 默认是不工作,无法主动创建,必须手动创建。(拓展:run loop和线程是紧密相连的,可以这样说run loop是为了线程而生,没有线程,它就没有存在的必要。Run loops是线程的基础架构部分)

C:自定义的 NSOperation 和 NSThread 需要手动创建自动释放池。比如: 自定义的 NSOperation 类中的 main 方法里就必须添加自动释放池。否则出了作用域后,自动释放对象会因为没有自动释放池去处理它,而造成内存泄露。

但对于 blockOperation 和 invocationOperation 这种面默认的Operation ,系统已经帮我们封装好了,不需要手动创建自动释放池。

@autoreleasepool 当自动释放池被销毁或者耗尽时,会向自动释放池中的所有对象发送 release 消息,释放自动释放池中的所有对象。

如果在一个vc的viewDidLoad中创建一个 Autorelease对象,那么该对象会在 viewDidAppear 方法执行前就被销毁了。

相关文章

  • 什么时间会创建自动释放池?

    A:运行循环检测到事件并启动后,就会创建自动释放池。 B:子线程的 runloop 默认是不工作,无法主动创建,必...

  • iOS开发自动释放池(个人看法):

    自动释放池什么时候创建,什么时候销毁? 自动释放池什么时候创建,什么时候销毁? 自动释放池什么时候创建,什么时候销...

  • iOS内存管理4-autorelease自动释放池

    临时变量什么时候释放自动释放池的原理自动释放池能否嵌套使用 使用xcode创建一个project在创建的时候有会生...

  • Objective-C内存篇(三) - Autorelease

    什么是自动释放池 自动释放,也是延迟释放。自动释放池的实现原理或者说作用:在自动释放池被销毁或耗尽时,会向池中的所...

  • AutoReleasePool

    AutoReleasePool 此处讨论的自动释放池不是我们以前手动创建的那种.是系统处理内存相关的. 自动释放池...

  • iOS自动释放池(图解)

    自动释放池是什么时候创建的?什么时候销毁的? 创建,运行循环检测到事件并启动后,就会创建自动释放池 销毁:一次完整...

  • 自动释放池

    自动释放池的创建和释放,销毁的时机如下所示 kCFRunLoopEntry; // 进入runloop之前,创建一...

  • Autoreleasepool

    局部释放池 创建一个新的自动释放池的方法:ARC下: 这相当于MRC下: 其中对象s会被加入到自动释放池,当ARC...

  • 自动释放池工作原理

    自动释放池什么时候创建,什么时候销毁? 每一次运行循环执行后,也就是每当事件被触发时都会创建自动释放池。在...

  • 自动释放池

    自动释放池 作用自动释放对象的所有 autorelease 的对象,在出了作用域之后,会被自动添加到最近创建的自动...

网友评论

    本文标题:什么时间会创建自动释放池?

    本文链接:https://www.haomeiwen.com/subject/xtsghftx.html