2010-01-19 12 views

Respuesta

3

Siguiendo la respuesta de diciu, puede usar el Mach-O API. Debe analizar los segmentos contenidos en el archivo binario y buscar el __OBJC; la estructura segment_command permite un acceso a las banderas del segmento.

También puede consultar el ClassDump project. Tiene un analizador de Mach-O bastante completo.

4

Es parte del segmento __OBJC pero no conozco ninguna API que lo exponga.

basura recogida:

cristi:tmp diciu$ otool -v -o ./a.out 
./a.out: 
Contents of (__DATA,__objc_classrefs) section 
00000001000010b0 0x0 
Contents of (__DATA,__objc_imageinfo) section 
    version 0 
    flags 0x6 OBJC_IMAGE_SUPPORTS_GC 

no basura recogida:

cristi:tmp diciu$ otool -v -o ./a.out 
./a.out: 
Contents of (__DATA,__objc_classrefs) section 
00000001000010b0 0x0 
Contents of (__DATA,__objc_imageinfo) section 
    version 0 
    flags 0x0 

El tiempo de ejecución hace utilizando funciones privadas: see gc_enforcer and it's use of * _objcInfoRequiresGC*

1

Es probablemente más fácil de simplemente tratar de cargar el paquete usando NSBundle de -loadAndReturnError: método. Si el paquete no se carga debido a que su configuración de GC es diferente a la de su aplicación, obtendrá un NSExecutableRuntimeMismatchError.

Cuestiones relacionadas