2012-05-18 20 views

Odpowiedz

9

Jest bezpiecznie założyć, że wszystkie zmienne instancji zostanie zainicjowany 0.

To jednak nie jest w przypadku lokalnie/metoda scoped zmienne, które, jeśli nie ręcznie inicjowany, będzie wskazywać na śmieci.

Przypominamy, jak Rob Napier points out, można znaleźć w the documentation for + (id)alloc:

isa przykład zmienna nowego zainicjowaniu przykład w strukturze danych, która opisuje klasę; pamięć dla wszystkich pozostałych zmiennych instancji jest ustawiona na 0.

+3

Wystarczy wskazać odniesienie, czytać dokumenty dla '+ alloc'. Konkretnie, wszystkie znaki iv, z wyjątkiem 'isa', są inicjowane na 0, ale nie powinieneś tak czy inaczej bawić się z' isa'. –

+1

Należy zwrócić uwagę, że wskaźniki auto obiektu _ są_ w rzeczywistości zainicjowane na 'nil' po skompilowaniu pod ARC. –

0

Jestem używany do zainicjowania go jawnie, głównie ze względu na identyfikowalność i czytelność. Ale kiedy spojrzysz na definicję BOOL, zobaczysz, że NO to nic innego jak #define dla 0. Z tego powodu, zakładam, że możesz bezpiecznie oczekiwać, że _test będzie NO.

naprawdę dobry wpis o Boolean, a ich obsługa jest Objective-C : BOOL vs bool