Classe de despejo e CFObjects
-
12-11-2019 - |
Pergunta
Faz aula de despejo ficar confuso com CFObjects/estruturas?Eu usei classe de despejo em um aplicativo e um do método do argumento foi o de uma estrutura arg1, que é um 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;
Então, como posso obter uma CFStringRef ou NSString* a partir deste arg1?Eu sou acho que classe de despejo é a substituição de alguns CFStringRef por CFString definições, mas é apenas um palpite...Tudo o que eu quero é ter uma CFStringRef de arg1, que é um BInstantMessage.
Thnaks!
Solução
A aplicação está a utilizar um wrapper C++ para a Fundação do Núcleo objetos.o struct CFString
no BInstantMessage
é um objecto deste tipo.Você quer (NSString *)(arg1._field2.mCFRef)
.
O void **_vptr$CFObject
o campo é a principal dica aqui – ele representa a vtable para um virtual da superclasse CFObject
– combinado com a política de C++ m
prefixo de convenção de nomenclatura.