Question

Le vidage de classe est-il confus par CFObjects / Structs? J'ai utilisé un vidage de classe sur une application et l'un des arguments de la méthode était un struct arg1 qui est un binstantMessage:

struct BInstantMessage {
    void **_field1;
    struct CFString _field2;
    unsigned short *_field3;
    struct DTextStyle _field4;
    struct BUser *_field5;
    struct BChat *_field6;
};

struct CFString {
    void **_vptr$CFObject;
    struct __CFString *mCFRef;
    _Bool mIsMutable;
};

struct __CFString;

Alors, comment puis-je obtenir un cfStringRef ou nsstring * de cet arg1? Je suppose que Class Dump remplace certains CFStringRef par des définitions CFString, mais c'est juste une supposition ... tout ce que je veux, c'est obtenir un CFStringref d'Arg1 qui est un BinstantMessage.

Thnaks!

Était-ce utile?

La solution

L'application utilise un wrapper C ++ pour les objets de fondation de base. la struct CFString dans BInstantMessage est un objet de ce type. Tu veux (NSString *)(arg1._field2.mCFRef).

La void **_vptr$CFObject Le champ est le principal indice ici - il représente le VTable pour une superclasse virtuelle CFObject - combiné avec le C ++ commun m Convention de dénomination préfixe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top