2010-01-19 8 views

cevap

3

diciu cevabını takiben, Mach-O API'u kullanabilirsiniz. Ikili dosyada bulunan bölümleri ayrıştırmak ve __OBJC birini aramak zorundasınız; segment_command yapısı, segmentin bayraklarına erişime izin verir. Ayrıca, ClassDump project'a da bakabilirsiniz. Oldukça eksiksiz bir Mach-O ayrıştırıcısına sahiptir.

4

Bu, __OBJC segmentinin bir parçası ancak bunu açıklayan API'ları bilmiyorum.

Çöp toplanan:

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 
toplanan

Sigara çöp:

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 

çalışma zamanı bunu yapar kullanarak özel işlevler: see gc_enforcer and it's use of * _objcInfoRequiresGC*

1

O var muhtemelen sadece denemek ve kullanan paket yüklemek için en kolay NSBundle en -loadAndReturnError: yöntemi. Paket, GC ayarlarının uygulamanızdakilerden farklı olması nedeniyle yüklenmezse, bir NSExecutableRuntimeMismatchError alırsınız.