ultima tutorial objective logo example compiler objective-c crash category

objective c - tutorial - Aclare las categorías de Objective-C en un archivo separado



objective c ultima version (2)

Este es un error del enlazador donde los métodos de categoría declarados en su propia unidad de compilación no están vinculados correctamente en una aplicación. Ver la nota técnica de Apple aquí:

Construyendo bibliotecas estáticas Objective-C con categorías

Debe especificar el indicador del vinculador -all_load en su aplicación, o una técnica ''hacky'' sería definir una macro que definirá una clase ficticia y la implementación, y llamará a esa macro en cada implementación de categoría:

#define FIX_CATEGORY_LINKER_BUG(name) / @interface FIX_CATEGORY_LINKER_BUG_##name @end / @implementation FIX_CATEGORY_LINKER_BUG_##name @end

Y úselo de la siguiente manera por encima de su implementación de categoría:

FIX_CATEGORY_LINKER_BUG(NSStringMyAdditions) @implementation NSString (MyAdditions) // ...

He agregado algunos métodos a la clase existente en el motor por categoría. Esta categoría se declara e implementa en mis archivos separados. Luego incluyo estos archivos (pero todos los archivos del motor no se modifican, por lo que solo se incluyen las declaraciones originales en el motor). Engine está integrado en lib estática y enlazado con mi aplicación. Cuando llamo a un método de mi categoría, la aplicación falla con el error "selector no reconocido enviado a instancia ...". Pero si declaro categoría en archivo con clase de motor original, todo funciona.

¿Por qué el selector de categoría no se reconoce si se declara e implementa en archivos separados? ¿Importa el orden de incluir archivos?