2009-06-30 12 views
5

¿Cuándo y cuándo no necesita el símbolo * (que se debe a que en objetivo-c todas las variables como NSString son variables de puntero)?Objetivo-C uso de punteros

Por ejemplo, cuando necesita hacer "NSString *" en lugar de simplemente "NSString"?

Respuesta

8

En Objective-C, todas las referencias a objetos son punteros, por lo que siempre necesita el operador del puntero cuando declara con un objeto Objective-C.

Para otros tipos, el uso es exactamente el mismo que en C. Use punteros cuando desee pasar estructuras de datos o tipos primitivos por referencia.

+1

La excepción es el tipo "id", que es más o menos equivalente a void * en C, y por lo tanto, la estrella se incluye en el tipo. –

3

Utiliza el asterisco para todos los objetos Objective-C (como NSDictionary, NSString, NSNumber).

Para cualquier cosa que sea un tipo primitivo (int, double, float) no necesita el asterisco. Sin embargo, el prefijo NS no siempre significa que debe usar un asterisco. Cocoa define algunas estructuras (como NSInteger, NSRect, NSPoint) que se basan en tipos primitivos. Usted no usa el asterisco aquí tampoco. Un NSRect, por ejemplo, es solo una estructura de NSPoint y NSSize, ambos compuestos por 2 CGFloats (un tipo primitivo).

Puede pasar un puntero a uno de estos tipos primitivos o estructuras usando la notación *.