2009-06-30 2 views
5

Kiedy ty i kiedy nie potrzebujesz symbolu * (co jest spowodowane tym, że w obiekcie c wszystkie zmienne, takie jak NSString, są zmiennymi wskaźnikowymi)?Objective-C użycie wskaźników

Na przykład, kiedy trzeba zrobić "NSString *" zamiast tylko "NSString"?

Odpowiedz

8

W Objective-C wszystkie odwołania do obiektów są wskaźnikami, więc zawsze potrzebujesz operatora wskaźnika, gdy deklarujesz z obiektem Objective-C.

Dla innych typów użycie jest dokładnie takie samo jak w C. Używaj wskaźników, gdy chcesz przekazać struktury danych lub typy pierwotne przez odniesienie.

+1

Wyjątkiem jest typ "id", który jest mniej więcej równoważny pustce * w C, a więc gwiazda jest zawarta w typie. –

3

Używa się gwiazdki dla wszystkich obiektów Objective-C (takich jak NSDictionary, NSString, NSNumber).

Dla wszystkiego, co jest typem pierwotnym (int, double, float), nie potrzebujesz gwiazdki. Jednak przedrostek NS nie zawsze oznacza, że ​​musisz użyć gwiazdki. Kakao definiuje niektóre struktury (takie jak NSInteger, NSRect, NSPoint), które są oparte na typach pierwotnych. Nie używaj tu również gwiazdki. NSRect, na przykład, jest po prostu strukturą NSPoint i NSSize, z których oba składają się z 2 CGFloats (typ pierwotny).

Możesz przekazać wskaźnik do jednego z tych typów lub struktur pierwotnych, używając * notacji.