2011-08-18 8 views
8

Estoy trabajando en mi primera aplicación Mac OS X. Mi proyecto se configuró con los valores predeterminados de XCode y no he tocado ninguna configuración de compilación. Al construir para Mac de 64 bits, la aplicación funciona bien. Sin embargo, cuando se construye para Mac de 32 bits, me sale un error aparentemente arbitraria que dice:¿Error al generar la aplicación OS X de 32 bits?

Semantic issue: Synthesized property 'myProperty' must either be named the same as a compatible ivar or must explicitly name an ivar.

¿Qué tipo de cosas puedo comprobar?

+3

Veamos el archivo de encabezado que contiene la propiedad y las declaraciones de variables de instancia - el mensaje de error es muy bueno, exactamente – Mark

+0

Me siento tonto ahora. He revisado esos archivos muchas veces, incluso en otro día. ¡Y ahora que me pediste que volvieras a mirarlos vi un error tipográfico! Wow gracias. – anna

Respuesta

20

Parece que ha encontrado el error, pero creo que puedo responder su pregunta por si alguien más lo encuentra.

Apple ha realizado muchos cambios en el tiempo de ejecución Objective-C de 64 bits que no podían hacer antes, ya que rompería la compatibilidad binaria. Una de las cosas que es diferente es que en el tiempo de ejecución de 32 bits las propiedades sintetizadas tienen que estar respaldadas por variables de instancia. En el tiempo de ejecución de 64 bits, las propiedades sintetizadas lo necesitan pero se crean automáticamente para usted. Por defecto, el nombre de la variable de instancia debe ser el mismo que el nombre de la propiedad.

Por lo tanto, si necesita admitir 32 bits, asegúrese de crear variables de instancia para todas sus propiedades. Si solo admite 64 bits, puede hacerlo para que su código pueda compilarse tanto para 32 bits como para 64 bits al mismo tiempo, pero no es necesario.

+7

Las propiedades sintetizadas aún tienen que estar respaldadas por variables de instancia en el tiempo de ejecución moderno; la diferencia es que el compilador los creará por usted, mientras que cuando se compila para la versión anterior de 32 bits, los ivars deben declararse explícitamente. –

+0

¡Gracias a los dos! Es bueno saber ese tipo de información. – anna

+0

Gracias por la respuesta, esto me salvó :) – banderson623

0

Puede establecer la macro de preprocesador NS_BUILD_32_LIKE_64 en Xcode para el objetivo de compilación de 32 bits. Esto le ahorrará la molestia de mantener un código separado para las versiones de 32 bits y 64 bits.

Cuestiones relacionadas