¿Cuál es la diferencia entre una función C (estática o no) declarada dentro o fuera del bloque de implementación (@implementation ... @end) de una clase Objective-C?Obj-C: funciones C declaradas dentro o fuera del bloque @implementation, ¿cuál es la diferencia?
es especialmente cierto esto ?:
Si tiene que meter en el interior del objeto directamente, puede poner esta función dentro del bloque @implementation de su clase, y luego se puede acceder a las variables de instancia con el operador de flecha C Pero eso es un poco travieso, por lo tanto, para preservar tu Pureza de Esencia deberías estar usando llamadas de método en tu objeto. Fin del Sermón. Aquí está el mal:
@implementation OblateSphereoid
void drawEggThunk (DrawingContext *context, Rect areaToDraw, void *userData)
{
BWOblateSphereoid *dealie = (BWOblateSphereoid *)userData;
dealie->_frognatz = [NSColor plaidColor];
// and more stuff.
} // drawEggThunk
...
@end // OblateSphereoid
¿Puedo acceder a las variables de instancia de mi clase dentro de las funciones (declaradas en la misma clase) de esta manera?
Upvoted por una pregunta interesante (aunque tal vez una muy mala práctica) Solo por curiosidad, ¿solo puedes llamar a drawEggThunk desde dentro de tu clase? –
no puedo, la función es una función de devolución de llamada llamada desde un subsistema C, como puede ver, yo uso * userData para pasar una referencia a uno mismo cuando se configuran las devoluciones de llamada. – jlpiedrahita