Deloloc вызывается на iPhone? - PullRequest
       3

Deloloc вызывается на iPhone?

9 голосов
/ 12 февраля 2010

Я заметил, что за последние несколько недель, узнав, как работает CocoaTouch, методы dealloc не вызывают, когда я выхожу из приложения в iPhone Simulator. Теперь, если честно, я не делаю ничего слишком научного - просто помещаю NSLog операторы, которые можно вывести на консоль. Мои вопросы:

  1. Отключается ли симулятор от XCode при выходе из приложения, останавливая мой NSLog эхо на консоли?

  2. Разве dealloc не называется оптимизацией, потому что приложение все равно завершается?

  3. Будут ли вызываться dealloc при работе приложения на реальном оборудовании iPhone?

Ответы [ 2 ]

10 голосов
/ 12 февраля 2010

В документах говорится, что для операционной системы более эффективно восстанавливать память одновременно, чем для приложения, чтобы медленно освобождать все свои фрагменты памяти. По этой причине dealloc нельзя отправлять огромному количеству объектов; и по этой причине важно не управлять дефицитными ресурсами в dealloc. Чтобы очистить дефицитные ресурсы, вероятно, было бы лучше, чтобы ваш делегат приложения ответил на applicationWillTerminate: и провел там очистку.

- (void) applicationWillTerminate:(NSApplication/UIApplication *) anApp
{
    [scarceResourceManager relinquishScarceResources];
}
0 голосов
/ 12 февраля 2010

Как уже сказал Dreamlax, система восстанавливает всю память, как только приложение выходит.Таким образом, приложение не может вызывать dealloc при выходе.Это стандартное поведение в Mac OS X, и я сомневаюсь, что на iPhone оно будет другим - симулируемым или «реальным».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...