Дамп класса и CFObjects
-
12-11-2019 - |
Вопрос
Дамп класса путается с 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
соглашение об именовании префиксов.