didReceiveMemoryWarning и viewDidUnload вопрос о памяти - PullRequest
0 голосов
/ 28 июля 2011

У меня есть 3 NSArrays из NSDictionarys, которые я заполняю, если кнопка выбрана (данные не создаются в viewDidLoad), мне избавиться от этой памяти в обоих из этих методов, или только один или другой?Спасибо!

Ответы [ 2 ]

1 голос
/ 28 июля 2011

Это зависит от того, когда вам нужны эти данные.

  • В dealloc вы должны выпустить все оставшиеся ивы.
  • В viewDidUnload вы должны выпустить все ивы, которыевоссозданы в viewDidLoad.
    • Например, вы можете освободить идентификаторы сопоставления NSDictionary для UIButtons, поскольку они все равно будут воссозданы в viewDidLoad, но сохраните NSDictionary, в котором хранятся выбранные идентификаторы, а какие нет.
  • В viewWillDisappear или viewDidDisppear вы можете освободить любые ивары, содержащие данные, которые должны быть сброшены всякий раз, когда пользователь уходит и возвращается в представление.Вы можете или не хотите делать это условно в зависимости от того, уходит ли пользователь из-за модального режима или нет.
  • В didReceiveMemoryWarning вы хотите разблокировать любые данные, которые хранятся для более быстрого доступа, но могутбыть перезагружен с диска или пересчитан.
    • Например, UIViewController часто будет держать свой вид вокруг, пока не получит didReceiveMemoryWarning, даже если вид больше не виден.
0 голосов
/ 28 июля 2011

Вы бы использовали viewDidUnload для освобождения объектов просмотра. В этом случае вы захотите выпустить их в didReceiveMemoryWarning, и если они являются иварами (возможно, они есть; в противном случае у вас не будет ссылки на их выпуск), вы также должны выпустить их в dealloc.

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