ARC interdit les objects Objective-C dans les structures ou les unions malgré le marquage du fichier -fno-objc-arc

ARC interdit les objects Objective-C dans les structures ou les unions malgré le marquage du fichier -fno-objc-arc? Pourquoi cela est-il ainsi?

J’ai supposé que si vous le marquez -fno-objc-arc vous n’avez pas cette ressortingction.

Si vous avez ce message, essayez __unsafe_unretained. Ce n’est sûr que si les objects de la structure ne sont pas retenus. Exemple: Si vous utilisez OpenFeint avec ARC, la classe OFBragDelegateSsortingngs indique cette erreur dans une structure.

typedef struct OFBragDelegateSsortingngs { NSSsortingng* prepopulatedText; NSSsortingng* originalMessage; } OFBragDelegateSsortingngs; 

à

 typedef struct OFBragDelegateSsortingngs { __unsafe_unretained NSSsortingng* prepopulatedText; __unsafe_unretained NSSsortingng* originalMessage; } OFBragDelegateSsortingngs; 

Plutôt que d’utiliser une structure , vous pouvez créer une classe Objective-C pour gérer les données à la place.

C’est parce que l’arc ne peut pas suivre les objects dans les structures ou les unions (puisqu’ils sont à ce sharepoints pointeurs C).

Même si vous avez marqué le fichier / classe en question avec -fno-objc-arc vous pouvez toujours lui passer en paramètre un object contrôlé par arc, ce qui entraînerait très probablement une fuite de mémoire.