2009-06-30 24 views
5

Quando si e quando non è necessario il simbolo * (che è perché in ogg-c tutte le variabili come NSString sono variabili puntatore)?Obiettivo-C uso di puntatori

Ad esempio, quando è necessario eseguire "NSString *" anziché solo "NSString"?

risposta

8

In Objective-C, tutti i riferimenti agli oggetti sono puntatori, quindi è sempre necessario l'operatore puntatore quando si dichiara con un oggetto Objective-C.

Per altri tipi, l'utilizzo è esattamente lo stesso di C. Utilizzare i puntatori quando si desidera passare le strutture di dati o i tipi primitivi per riferimento.

+1

L'eccezione è il tipo "id", che è approssimativamente equivalente a void * in C, e quindi la stella è inclusa nel tipo. –

3

Si utilizza l'asterisco per tutti gli oggetti Objective-C (come NSDictionary, NSString, NSNumber).

Per tutto ciò che è un tipo primitivo (int, double, float) non è necessario l'asterisco. Tuttavia, il prefisso NS non sempre significa che è necessario utilizzare un asterisco. Cocoa definisce alcune strutture (come NSInteger, NSRect, NSPoint) basate su tipi primitivi. Anche qui non usi l'asterisco. Un NSRect, ad esempio, è solo una struttura di un NSPoint e NSSize, entrambi composti da 2 CGFloats (un tipo primitivo).

È possibile passare un puntatore a uno di questi tipi o strutture primitivi utilizzando la notazione *.