Zaktualizowana odpowiedź na zmienioną dokumentację
Informacje są teraz rozmieszczone w kilku przewodnikach w dokumentacji. Oto lista wymaganych lektur:
Odpowiedź na to pytanie zależy teraz całkowicie od tego, czy używasz aplikacji zarządzanej przez ARC (współczesne domyślne ustawienie dla nowych projektów), czy też wymuszasz ręczne zarządzanie pamięcią.
Assign vs. Weak - użyj przypisania, aby ustawić wskaźnik właściwości na adres obiektu bez zachowywania go lub w inny sposób kurowania; użyj słabego, aby właściwość wskazywała na zero automatycznie, jeśli przypisany do niej obiekt zostanie cofnięty. W większości przypadków będziesz chciał użyć słabego, aby nie próbować uzyskać dostępu do zwolnionego obiektu (nielegalny dostęp do adresu pamięci - „ EXC_BAD_ACCESS
”), jeśli nie wykonasz właściwego czyszczenia.
Zachowaj a kopiuj - zadeklarowane właściwości używają zachowywania domyślnie (więc można je po prostu całkowicie pominąć) i automatycznie zarządzają liczbą odwołań do obiektu, niezależnie od tego, czy inny obiekt jest przypisany do właściwości, czy jest ustawiony na zero; Użyj kopii, aby automatycznie wysłać nowo przypisanemu obiektowi -copy
wiadomość (która utworzy kopię przekazanego obiektu i zamiast tego przypisze tę kopię do właściwości - przydatne (nawet wymagane) w niektórych sytuacjach, gdy przypisany obiekt może zostać zmodyfikowany po ustawieniu jako właściwość innego obiektu (co oznaczałoby, że modyfikacja / mutacja dotyczyłaby również tej właściwości).