2009-06-30 17 views
5

Wann brauchen Sie und wann brauchen Sie nicht das * Symbol (was ist, weil in objective-c alle Variablen wie NSString Zeigervariablen sind)?Objective-C Verwendung von Zeigern

Zum Beispiel wann müssen Sie "NSString *" statt nur "NSString" tun?

Antwort

8

In Objective-C sind alle Objektreferenzen Zeiger, so dass Sie immer den Zeigeroperator benötigen, wenn Sie mit einem Objective-C-Objekt deklarieren.

Für andere Typen ist die Verwendung genau wie in C. Verwenden Sie Zeiger, wenn Sie Datenstrukturen oder primitive Typen als Referenz übergeben möchten.

+1

Die Ausnahme ist der Typ "id", der in etwa dem Wert void * in C entspricht. Daher wird der Stern in den Typ eingeschlossen. –

3

Sie verwenden das Sternchen für alle Objective-C-Objekte (z. B. NSDictionary, NSString, NSNumber).

Für alles, was ein primitiver Typ ist (int, double, float), brauchen Sie das Sternchen nicht. Das NS-Präfix bedeutet jedoch nicht immer, dass Sie ein Sternchen verwenden müssen. Cocoa definiert einige Strukturen (wie NSInteger, NSRect, NSPoint), die auf primitiven Typen basieren. Sie verwenden das Sternchen hier auch nicht. Ein NSRect zum Beispiel ist nur eine Struktur von NSPoint und NSSize, die beide aus zwei CGFloats (einem primitiven Typ) bestehen.

Sie können einen Zeiger auf einen dieser primitiven Typen oder Strukturen mit der Notation * übergeben.