2009-04-25 9 views

Respuesta

14

Lo haría de la misma manera que cualquier otra función que escribiría en C. Entonces, si tiene su función definida en un archivo de origen llamado myLibraryFunctions.m, cualquiera que desee usar esa función incluiría el archivo de encabezado donde usted lo define (probablemente myLibraryFunctions.h, y luego simplemente asegúrese de que se vinculen con el archivo del objeto (la mayoría de esto se hará en Xcode si simplemente crea un archivo para alojar sus funciones "globales" e incluye el archivo de encabezado para ellas) . en cualquier archivo de origen que se accede a él desde a continuación, sólo definirlo:

void analyzeThis(id anyObject); 

void analyzeThis(id anyObject) { 
    NSLog(@"Object %p: %zu, %@", anyObject, malloc_size(anyObject), anyObject); 
} 

Pero, en realidad, podría escribir lo que quería en su función Estas funciones no hacen h. ser parte de cualquier definición de clase o algo así. En este caso, son exactamente los mismos que en C.

+0

Gracias! ¿Dónde está la opción oculta en XCode para configurar ese archivo de función global, para que XCode haga todas las importaciones de encabezado por mí? ¡Eso seria genial! – Thanks

+1

Agregue la importación del encabezado a su encabezado precompilado. Será el que tenga su nombre de proyecto y luego _pch al final. Por lo general, se encuentra bajo el grupo "Otras fuentes" en un proyecto de Xcode. –

1

¿Está tratando de volver a aplicar el método de descripción de NSObject? Si envía un mensaje NSObject devolverá una cadena que contiene información sobre sí mismo. Puede anular la descripción - (NSString *) y agregar más información a esta cadena.

Si hace esto, encontrará que ocurre la magia; por ejemplo, cuando imprime un objeto de matriz en el depurador repetirá todos los miembros de la matriz e imprimirá sus descripciones. Existen

+0

Una buena pista, gracias. En realidad, quería probar algo con respecto al manejo de la memoria. Una función que comprobará antes de un mensaje de liberación si el objeto aún existe. Puede ser útil. Todavia no estoy seguro. – Thanks

+1

Si está creando ese método para la depuración, realmente debería ver usar NSZombie. Si lo está utilizando como protector en tiempo de ejecución, podría causar otros problemas ... –

+0

Esto parece completamente distinto de NSZombie. –

1

Dos maneras de hacer esto:

  • escribir una función global, tal y como lo haría en C
  • crear una categoría de NSObject en el que se implementa un método que luego estará disponible para todos clases que tienen NSObject como antecesor.
Cuestiones relacionadas