85 votes

ARC interdit Objective-C des objets dans des structures ou des syndicats, malgré le marquage du fichier -fno-objc-arc

ARC interdit Objective-C des objets dans des structures ou des syndicats, malgré le marquage du fichier -fno-objc-d'arc? Pourquoi est-ce donc?

J'ai eu l'hypothèse que, si vous le marquez -fno-objc-arc vous n'avez pas cette restriction.

170voto

zeiteisen Points 2894

Si vous avez reçu ce message essayez __dangereuse_consignes. Il n'est sûr que, si les objets dans la struct sont des consignes. Exemple: Si vous utilisez OpenFeint avec l'ARC de la Classe OFBragDelegateStrings dit cette erreur dans une struct.

typedef struct OFBragDelegateStrings
{
     NSString* prepopulatedText;
     NSString* originalMessage;
} OFBragDelegateStrings;

pour

typedef struct OFBragDelegateStrings
{
     __unsafe_unretained NSString* prepopulatedText;
     __unsafe_unretained NSString* originalMessage;
} OFBragDelegateStrings;

30voto

János Points 1512

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

13voto

voidStern Points 2582

C'est parce que l'arc ne peut pas le suivi d'objets dans des structures ou des syndicats (depuis qu'ils sont à ce point de la plaine C les pointeurs).

Même si vous avez marqué le fichier/classe en question, -fno-objc-arc il est toujours possible de passer un objet contrôlé par l'arc comme paramètre, ce qui serait le plus susceptible d'entraîner une fuite de mémoire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X