2010-04-18 21 views
5

Quiero escribir una función independiente en Objective-C; tan esencialmente una función de estilo C, con llamadas de Objective-C en él. Por ejemplo:Funciones no miembro en Objective-C

NSString* someFunc() 
{ 
NSString* str = [[NSString alloc] init]; 

return str; 
} 

Declaro la función en un archivo de cabecera, y definir en él un archivo .m. Sin embargo, la función no parece estar compilada, ya que el enlazador se queja del símbolo que falta. Pensé que quizás debería ponerlo en un archivo C, pero luego, por supuesto, me escupió por escribir Objective-C Nonsense en BASI ... C.

¿Qué hago?

Respuesta

3

Esto resultó ser un error tonto de mi parte. La función se definió en un archivo .m pero estaba tratando de usarlo en un archivo .mm (C++/Objective-C), así que, naturalmente, estaba buscando un símbolo C++ - destrozado. Poniendo

#ifdef __cplusplus 
extern "C" { 
#endif 

// Declaration 

#ifdef __cplusplus 
} 
#endif 

en el archivo de encabezado soluciona el problema.

+0

Tengo la misma pregunta, pero aparentemente una respuesta diferente. Continuar mirando :( –

Cuestiones relacionadas