iphone - ARC prohíbe objetos Objective-C en estructuras o uniones a pesar de marcar el archivo-fno-objc-arc
ios5 automatic-ref-counting (3)
ARC prohíbe objetos Objective-C en estructuras o uniones a pesar de marcar el archivo -fno-objc-arc? ¿Por qué esto es tan?
Supongo que si lo marcas -fno-objc-arc no tienes esta restricción.
Esto se debe a que el arco no puede rastrear objetos en estructuras o uniones (ya que en ese punto son simples punteros C).
Aunque marcó el archivo / clase en cuestión con -fno-objc-arc
, aún puede pasar un objeto controlado por arco como parámetro, lo que muy probablemente resultaría en una pérdida de memoria.
Si recibió este mensaje, intente __unsafe_unretained. Solo es seguro, si los objetos en la estructura no están retenidos. Ejemplo: Si usa OpenFeint con ARC, la clase OFBragDelegateStrings dice este error en una estructura.
typedef struct OFBragDelegateStrings
{
NSString* prepopulatedText;
NSString* originalMessage;
} OFBragDelegateStrings;
a
typedef struct OFBragDelegateStrings
{
__unsafe_unretained NSString* prepopulatedText;
__unsafe_unretained NSString* originalMessage;
} OFBragDelegateStrings;
En lugar de utilizar una estructura , puede crear una clase Objective-C para administrar los datos en su lugar.