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!

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top