Вопрос

Дамп класса путается с CFObjects/структурами?Я использовал дамп класса в приложении, и одним из аргументов метода была структура arg1, которая представляет собой 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;

Итак, как я могу получить CFStringRef или NSString* из этого arg1?Я предполагаю, что дамп класса заменяет некоторые определения CFStringRef на определения CFString, но это всего лишь предположение...Все, что я хочу, это получить CFStringRef из arg1, который является BInstantMessage.

Спасибо!

Это было полезно?

Решение

Приложение использует оболочку C++ для объектов Core Foundation.тот struct CFString в BInstantMessage является объектом этого типа.Вы хотите (NSString *)(arg1._field2.mCFRef).

А void **_vptr$CFObject Поле здесь является основной подсказкой: оно представляет виртуальную таблицу виртуального суперкласса. CFObject – в сочетании с общим C++ m соглашение об именовании префиксов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top