iphone objective-c struct ios5 automatic-ref-counting

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.