Hay dos tiempos de ejecución para Cocoa/Objective-C: el tiempo de ejecución heredado y el tiempo de ejecución "moderno" (así es como Apple lo llama).iPhone Simulator: errores de compilación al usar variables de instancia sintetizadas
Según Apple's documentation, "aplicaciones para el iPhone y los programas de 64 bits en Mac OS X v10.5 y después utilizar la versión moderna del tiempo de ejecución".
Hasta ahora todo bien.
Ahora, el tiempo de ejecución "moderno" admite una característica llamada "variables de instancia sintetizadas", lo que significa que no tiene que definir una variable de instancia para cada propiedad declarada. La variable de instancia se agregará automáticamente. Presupuesto de la iPhone Reference Library: ". Para los tiempos de ejecución modernas, las variables de instancia se sintetizan según sea necesario Si una variable de instancia del mismo nombre ya existe, se utiliza"
Si se utiliza esta función en su aplicación para el iPhone, construye y funciona bien en el dispositivo iPhone (físico), pero cuando cambia el objetivo a "iPhone Simulator", obtiene errores de compilación:
propiedad sintetizada 'x' debe ser nombrado igual que un ivar compatible o debe nombrar explícitamente un ivar
¿Qué está pasando aquí? ¿No es el simulador de iPhone un verdadero simulador de iPhone? ¿Esto significa que el simulador usa un tiempo de ejecución diferente al del iPhone físico?
¿Cómo puedo usar esta característica en el simulador de iPhone?
EDIT:
El código que no se compila cuando la orientación del iPhone Simulator es:
@interface MyClass : NSObject {
}
@property NSString *prop1;
@end
Según la documentación, esto debería funcionar bien en el tiempo de ejecución "moderna" , y de hecho lo hace en el dispositivo iPhone, pero no se compila al cambiar el objetivo a iPhone Simulator.
Esto es correcto - es un error en el simulador actual. Hubo un tema SO sobre esto (que no puedo encontrar, tal vez fue un hilo cocoa-dev), y también esto: http://iphonedevelopment.blogspot.com/2009/06/runtime-madness.html –
@ Daniel: Vale la pena publicar este comentario como respuesta –
Creo que esto fue corregido en el SDK 4.0 o 4.1. –