xcode properties ios6 synthesize

xcode - El sintetizador automático de propiedad @ no funciona en la subclase NSManagedObject



properties ios6 (1)

Después de actualizar a la última versión de Xcode 4.5 para iOS6 anoche, recibo advertencias y errores como este

La propiedad ''mapAnnotation'' requiere que se defina el método ''mapAnnotation'' - use @synthesize, @dynamic o proporcione una implementación de método en esta implementación de clase

debido a que faltan @synthesize Statements, e incluso errores sobre iVars desconocidos si los uso.

El problema es que pensé que no era necesario escribir estas declaraciones @synthesize desde la última actualización de Xcode a 4.5 que salió con Mountain Lion, Y todos mis proyectos funcionaron sin ellos antes de actualizar Xcode anoche (eliminé un montón de declaraciones de @synthesize de mis archivos en ese entonces) Incluso está en las Notas de la versión:

• El comando Objective-C @synthesize se genera de forma predeterminada cuando se usan propiedades.

Así que estoy confundido, ¿me estoy perdiendo una nueva configuración de proyecto que activa la generación de @synthesize automática?

Pero ni siquiera funciona cuando creo un nuevo proyecto y lo intento.


Me enfrenté al mismo problema y encontré la razón y la solución.

Si observa el archivo de encabezado de NSManagedObject en iOS 6 SDK, verá "NS_REQUIRES_PROPERTY_DEFINITIONS" que obliga a las clases a especificar @dynamic o @synthesize para las propiedades.

(Puedes ver NS_REQUIRES_PROPERTY_DEFINITIONS en la diferencia de API entre iOS 5.1 y iOS 6.0).

Esto se debe a que el compilador debe saber si desea que una propiedad sea dinámica o sintetizada, especialmente en la implementación de una subclase de la clase NSManagedObject.

Podría resolver este problema simplemente agregando las líneas @synthesize explícitamente para las propiedades que no sean @dynamic en las subclases NSManagedObject.