我对自动释放对象的时间有疑问。当我发现这个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/