所以我正在iphone上创建我的第一个opengl es应用程序。我想autorelease一个对象,那时我注意到我似乎无法找到autorelease池的位置。Iphone开放式应用程序和自动释放池
1)是自动释放池已经为我的iPhone OpenGL ES的应用程序创建的? 2)如果它已经为我创建了多久池被排干?
所以我正在iphone上创建我的第一个opengl es应用程序。我想autorelease一个对象,那时我注意到我似乎无法找到autorelease池的位置。Iphone开放式应用程序和自动释放池
1)是自动释放池已经为我的iPhone OpenGL ES的应用程序创建的? 2)如果它已经为我创建了多久池被排干?
你有一个main.m文件?如果您使用的是标准GL ES应用程序模板,你应该看到:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
如果是这样,那么你有一个自动释放池,它被倒掉每次你去通过runloop。
谢谢这是我需要的信息。我并不完全理解它每次在runloop中如何被排空,但我会认为这段代码隐藏在我看不见的超类中的某个地方。 – Mel 2009-09-28 20:28:36
这有点令人困惑。我这里还有一些链接: http://stackoverflow.com/questions/798950 – mahboudz 2009-09-28 20:45:37
http://stackoverflow.com/questions/581828/autorelease-scope/583292#583292注意的部分:运行循环创建一个新的自动释放在它发送一个事件(例如applicationDidFinishLaunching :)并在事件结束时销毁该池时顺便提及, – mahboudz 2009-09-28 20:48:03