objective-c - iOS App 中是否创建了很多自动释放池?

标签 objective-c ios nsautoreleasepool nsrunloop

我对自动释放对象的时间有疑问。当我发现这个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 时,都会创建并释放一个新的自动释放池。

最佳答案

是的。每个循环都会创建一个新池,然后销毁它。

This解释了引用计数环境中的drain如何相当于release,因此它被销毁。下一个循环,您分配init另一个。

关于objective-c - iOS App 中是否创建了很多自动释放池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13122908/

相关文章:

ios - 获取 UIScrollView 内的 UICollectionView 高度

c++ - 是否可以将 C++ 接口(interface)与 Objective-C 一起使用?

ios - iOS 5 上的自动引用计数 (ARC)

iOS:自定义UITableViewCell的实现需要调用super

ios - 如何快速将日期格式从 dd/MM/YYYY 转换为 YYYY-MM-dd

ios - 如何理解“当使用带有__weak限定词的变量时,该对象总是在autoreleasepool中注册”

ios - iOS 7.0 中的 AVSpeechSynthesizer 有美国男声吗?

objective-c - 将 NSString 转换为 char 数组

cocoa - 帮助查看崩溃日志

iphone - NSAutoReleasePool泄漏