Próbuję dostosować się do wytycznych Apple dotyczących reagowania na ostrzeżenia o małej ilości pamięci w mojej aplikacji. Wytyczne mówią: "Po otrzymaniu (ostrzeżenie o małej ilości pamięci), aplikacja musi zwolnić jak najwięcej pamięci poprzez zwolnienie obiektów, których nie potrzebuje, lub wyczyszczenie pamięci podręcznych, które może odtworzyć później."iOS 5 + ARC - przypisuje zero do wskaźnika zwolnienia pamięci?
Pytanie brzmi: jak zwolnić pamięć za pomocą ARC?
Załóżmy na przykład, że mam obraz w hierarchii widoku, którego nie ma na ekranie. W didReceiveMemoryWarning, obecnie usuwam go z widoku, wywołując removeFromSuperview, ale nadal mam wskaźnik do samego UIImage. Czy powinienem również spróbować zwolnić tę pamięć? W jaki sposób? Przypisując zero do wskaźnika?
TIA: John
Proszę podać więcej informacji na temat wskaźnika. Czy to jest ivar, lokalny w metodzie, globalna, własność? – zaph
Te, o których myślę, to zmienne instancji UIImage *. – John
Okay, myślę, że rozwiązałem mój problem 1) używając słabego odniesienia do podglądu i 2) przypisując zero do wskaźnika, jeśli widok był nadal w pobliżu po wykonaniu didReceiveMemeoryWarning (co było za każdym razem, gdy zobaczyłem to w debugerze) . Przede wszystkim, wydaje mi się, że właśnie zdałem sobie sprawę, że nie można uniknąć ostrzeżeń o pamięci przez cały czas ... czasami są one spowodowane przez inne aplikacje. Musisz tylko odpowiednio je obsłużyć. Po naprawieniu programu obsługi ostrzeżenia o pamięci, otrzymałem ostrzeżenie tylko raz, zamiast za każdym razem, gdy uruchomiłem UIImagePickerController. Duża poprawa. – John