6
votes

Comment déterminer de manière programmée sur les paramètres de la collecte des ordures de la bundle de cacao du plugin?

sur Mac OS X Utilisation de l'objectif-C 2, les faisceaux de plug-in peuvent être compilés avec l'une des trois réglages de collecte des ordures:

  1. non pris en charge
  2. pris en charge ( -fobjc-gc )
  3. requis ( -fobjc-gc-seulement )

    Comment peut-on interroger par programme un faisceau de plug-in compilé pour déterminer lequel de ces trois paramètres a été utilisé?


0 commentaires

3 Réponses :


4
votes

Cela fait partie du segment __Objc, mais je ne connais aucune API qui l'expose.

déchets collectés: p> xxx pré>

non déchets recueillis: 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


0 commentaires

1
votes

Il est probablement plus facile de simplement essayer d'essayer de charger le paquet à l'aide de la méthode -LoadandreturnErurror de Nsbundle: . Si le paquet ne se charge pas en raison du fait que ses paramètres de GC sont différents de ceux de votre application, vous obtiendrez un Nsexecutableruntimemismascatcher .


0 commentaires

3
votes

Après la réponse de Diciu , vous pouvez utiliser le Mach-O API . Vous devez analyser les segments contenus dans le fichier binaire et rechercher la __ objc une; La structure segment_command permet d'accéder aux indicateurs du segment.

Vous pouvez également jeter un coup d'œil sur le Projet de classeDump . Il a un analyseur de mach-o complet complet.


0 commentaires