2011-03-14 5 views
18

Tengo otra advertencia molesta a la que me gustaría haber ido. Básicamente, tengo una int declarada así: @property (nonatomic, assign) int *myInt; y se configura así: myInt = 0;. También se sintetiza en el archivo de implementación. Recibo una advertencia en la línea donde establezco el valor int y dice Incompatible intiger to pointer conversion assigning to 'int *' from 'int'. ¿Qué debo hacer para solucionar esto?Entero incompatible con la conversión del puntero asignando a 'int *' desde 'int'

Respuesta

55

¡Hay una gran sugerencia en el mensaje de error!

En C y el objetivo C, un int es un tipo de datos primitivo. Has escrito int *, que significa "un puntero a una int", mientras que parece que solo querías una int.

Así que cambia su propiedad a esto:

@property (nonatomic, assign) int myInt; 

Para obtener más información, Google "punteros de C" y usted encontrará información como esta: http://pw1.netcom.com/~tjensen/ptr/pointers.htm

2

Otra forma de resolver esto es simplemente no declarar un puntero (dejar caer el asterisco):

@interface ViewController : UIViewController { 
    NSUInteger myObjcInt; // unsigned (>= 0) NSObject int, yo 
} 
+0

No es otra cosa, es lo mismo que occulus dijo. Por cierto, tu comentario lo llama un "NSObject int", que en realidad no tiene mucho sentido como un término. – Chuck

+1

Touche. Estaba leyendo esta publicación durante una búsqueda de un problema relacionado con NSInte, no Int. Un poco demasiado rápido en la respuesta, muchachos. Mi error. – Rob

12

Sí, basta con quitar asterisco (*) de la declaración.

para example.declare BOOL IsChecked en lugar de BOOL * isChecked.

1

int *MyInt es un puntero a int, not a int.
Como le dijeron otros, simplemente elimine el * y tendrá una int regular.