Release, Dealloc i Self reference

Pomyślałem więc, że wszystkie te pytania zostały rozwiązane. Wtedy nagle pojawia się błąd (awaria) Nie mogę się domyślić. Potem, po przeprowadzeniu badań w celu naprawienia awarii, zauważyłem, że wszystko, co sądziłem, że wiem o tych krytycznych obszarach, jest nieco błędne.

Poniżej znajduje się 8 pytań, które właśnie zamierzam nakręcić w nadziei, że ktoś odpowie - odpowiedzi na te pytania bardzo pomogą mi odzyskać zrozumienie. Dzięki z góry!

Q1) Czy jest w porządku, aby wywołać Release na obiekcie, jeśli to odniesienie jest zerowe? To powinno być nieszkodliwe, prawda?

P2) Czy można zatwierdzić Release na obiekcie, jeśli odwołanie zostało zwolnione i jako liczba odniesienia 0?

P3) Czy konieczne jest ustawienie odniesienia do zera PO zwolnieniu? Co się stanie, jeśli nie ustawisz go na zero?

P4) Czy rzeczywiście istnieje różnica między wartością nil i NULL, czy jest to po prostu kwestia semantyczna, aby pomóc czytelnikowi / deweloperowi znać typ obiektu tylko przez rzut oka na niego?

P5) Używanie właściwości WYMAGA użycia wskaźnika „Self”?

P6) Użycie zmiennych instancji wymaga, aby wskaźnik „Self” NIE był używany?

P7) Kiedy kiedykolwiek chciałbym użyć zmiennej instancji zamiast jej właściwości? Wyobrażam sobie, że członkowie danych typu wartości są w porządku, ponieważ ich dane nie są udostępniane i zachowywane.

P8) Czy konieczne jest wywołanie dealloc obiektu w ramach funkcji dealloc? W wielu przykładach widziałem wywoływanie Release, ale nie Dealloc - czy takie samouczki są niepoprawne?

questionAnswers(5)

yourAnswerToTheQuestion