Frage

Wird der Klassen-Dump durch CFObjects / structs verwirrt?Ich habe Klassendump für eine Anwendung verwendet und eines der Argumente der Methode war eine Struktur arg1, die eine BInstantMessage ist:

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;

Also, wie kann ich einen CFStringRef oder NSString * von diesem arg1 bekommen?Ich vermute, dass class dump einige CFStringRef durch CFString-Definitionen ersetzt, aber es ist nur eine Vermutung...Ich möchte nur ein CFStringRef von arg1 , das eine BInstantMessage ist.

Danke!

War es hilfreich?

Lösung

Die Anwendung verwendet einen C ++ - Wrapper für Core Foundation-Objekte.der struct CFString in BInstantMessage ist ein Objekt dieses Typs.Du willst (NSString *)(arg1._field2.mCFRef).

Der void **_vptr$CFObject field ist hier der wichtigste Hinweis – es repräsentiert die vtable für eine virtuelle Oberklasse CFObject - kombiniert mit dem gängigen C++ m präfix-Namenskonvention.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top