Mat*_*oal 4 macos cocoa autorelease nsautoreleasepool automatic-ref-counting
我正在为ARC重构我的OS X应用程序.打开main.m文件,我确信我会找到Autorelease Pool实例化和排空(比如iOS项目),但令我惊讶的是它不在那里.
所以我的第一个问题是:
我的下一个问题是:
小智 6
您的main.m文件应该有以下调用:
NSApplicationMain(argc, (const char **)argv);
Run Code Online (Sandbox Code Playgroud)
NSApplicationMain()
负责创建应用程序,即一个实例,该实例NSApplication
又负责创建自动释放池:
NSApplication类在初始化期间和事件循环内部(特别是在其初始化(或sharedApplication)和run方法中)设置自动释放池(NSAutoreleasePool类的实例).
这意味着,在一般情况下,您不必担心创建自动释放池,因为NSApplication
在初始化和事件循环中都已经这样做了.在某些情况下,创建自己的自动释放池可能是必需/可取的,例如,具有创建许多自动释放对象的循环的方法.在这种情况下,为每个循环迭代创建一个自动释放池是个好主意.