Pregunta

¿El volcado de clases se confunde con CFObjects/structs?Utilicé el volcado de clases en una aplicación y uno de los argumentos del método era una estructura arg1 que es un 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;

Entonces, ¿cómo puedo obtener un CFStringRef o NSString* de este arg1?Supongo que el volcado de clases está reemplazando algunas definiciones CFStringRef por definiciones CFString, pero es solo una suposición...Todo lo que quiero es obtener un CFStringRef de arg1 que es un BInstantMessage.

¡Gracias!

¿Fue útil?

Solución

La aplicación utiliza un contenedor de C++ para objetos de Core Foundation.el struct CFString en BInstantMessage es un objeto de este tipo.Quieres (NSString *)(arg1._field2.mCFRef).

El void **_vptr$CFObject El campo es la pista principal aquí: representa la tabla virtual para una superclase virtual. CFObject – combinado con el C++ común m convención de nomenclatura de prefijos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top