【问题标题】:Are there many autorelease pools created in iOS App?iOS App中是否创建了许多自动释放池?
【发布时间】:2012-10-18 20:13:59
【问题描述】:

我怀疑何时自动释放对象。当我发现这个question,

在线程接受的答案中,为运行循环执行提供了以下解释:

void int UIApplicationMain (int argc, char *argv[], NSString *principalClassName, NSString *delegateClassName) {
    UIApplication *app = /* create app using principalClassName */;
    [app setDelegate:/* create delegate using delegateClassName */];
    while (![app shouldTerminate]) {
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        event = [app getNextEvent];
        [app dispatchEvent:event];
        [pool drain];
    }
}

runloop是这样执行的吗?

这是否意味着在每次执行runloop时,都会创建并释放一个新的自动释放池。

【问题讨论】:

    标签: objective-c ios nsautoreleasepool nsrunloop


    【解决方案1】:

    是的。您在那里的每个循环都在创建一个新池并销毁它。

    This 解释了drain 在引用计数环境中如何等同于release,因此被销毁。下一个循环,你alloc,init 另一个。

    【讨论】:

      猜你喜欢
      • 2012-09-17
      • 2011-07-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-16
      相关资源
      最近更新 更多