сделалReceiveMemoryWarning в iOS 6

Я начинаю новый проект (без ARC) для iOS 6. Из документ Apple:

Используйте этот метод, чтобы освободить все некритические объекты, связанные с вашим контроллером представления. В iOS 6 вы также можете использовать этот метод для освобождения ссылок для просмотра объектов.

Мой вопрос: после того, как мы освободим «некритические объекты» в didReceiveMemoryWarning, когда мы сможем снова восстановить «некритические объекты»?

Я спрашиваю это, потому что, поскольку viewDidUnload никогда не будет вызываться в iOS6, я считаю, что viewDidLoad не будет вызываться во второй раз перед завершением программы. Я прав в этом?


person Stanley    schedule 11.05.2013    source источник
comment
Я полагаю, что viewDidLoad не будет вызываться второй раз перед завершением программы... (Правильно ли это?) Да.   -  person matt    schedule 11.05.2013
comment
Почему бы никому не использовать ARC???? Просто спрашиваю.   -  person matt    schedule 11.05.2013
comment
Спасибо за ваш комментарий и любезную помощь. Начал свой первый проект еще до выхода ARC и привык к схеме RC. Слышал, что ARC не должен иметь каких-либо потерь производительности и может значительно сэкономить работу. Но мне вполне комфортно пользоваться схемой без ARC, и я не чувствую особых накладных расходов, связанных с отслеживанием значений r.   -  person Stanley    schedule 11.05.2013
comment
На самом деле планировал познакомиться с ARC и попробовать. Очень хотелось бы услышать мнение тех, кто знаком как с ARC, так и без ARC. Еще один фактор заключается в том, что у меня есть ощущение, что для импорта стороннего набора кодов, такого как ZXing (сканер QR-кода), использование схемы без ARC может быть более простым. Пожалуйста, поправьте меня, если я ошибаюсь.   -  person Stanley    schedule 11.05.2013
comment
Мое мнение? ARC!!! Это просто простой флаг компилятора для файлов, отличных от ARC.   -  person Undo    schedule 11.05.2013
comment
Спасибо за ваш комментарий. С другой стороны, я хочу сказать, что я считаю, что ARC — очень хорошая концепция, поскольку она экономит работу по кодированию и не влияет на производительность (это также определенно должно снизить вероятность ошибки кодирования). Привыкание к чему-то не повод не попробовать что-то новое и лучшее...   -  person Stanley    schedule 13.05.2013


Ответы (1)


Используйте ленивую загрузку для ваших некритических данных. Очистите эти данные в didReceiveMemoryWarning. Затем данные будут снова загружены лениво при следующей попытке доступа к ним.

person rmaddy    schedule 11.05.2013
comment
А вот реальный код, иллюстрирующий слова @rmaddy: apeth.com/iOSBook/ch19. html#SECvcmem - person matt; 11.05.2013
comment
Спасибо всем за подробный ответ и полезные комментарии. - person Stanley; 11.05.2013