dealloc会在iPhone上调用吗?

fuz*_*oat 9 iphone cocoa-touch objective-c

我注意到在学习CocoaTouch过去几周的工作原理dealloc时,当我在iPhone模拟器中退出应用程序时,似乎没有调用方法.现在,公平地说,我没有做任何过于科学的事情 - 只需加入NSLog可以打印到控制台的语句.我的问题是:

  1. 模拟器是否在应用程序出口处与Xcode断开连接,阻止我NSLog回显到控制台?

  2. dealloc不是被称为优化,因为应用程序正在退出?

  3. 请问dealloc,当应用程序是在实际的iPhone硬件上运行的小号被调用?

dre*_*lax 10

文件说,这是更有效的对操作系统的所有比的应用慢慢放弃所有的内存其大块的一次回收内存.出于这个原因,dealloc可能不会发送给大量的对象; 而对于这个原因,不要在管理稀缺的资源是非常重要的dealloc.要清理稀缺资源,最好让应用程序委托响应applicationWillTerminate:并在那里进行清理.

- (void) applicationWillTerminate:(NSApplication/UIApplication *) anApp
{
    [scarceResourceManager relinquishScarceResources];
}
Run Code Online (Sandbox Code Playgroud)

  • 直言不讳:当应用程序终止时,花费CPU周期调用`free()`或`-deallocate`是完全浪费的资源.Mac OS X和iPhone都使用内存模型,其中每个进程都是隔离的.当进程终止时,*同时回收与该应用程序相关的所有*内存资源. (3认同)