56 votes

Méthode de libération Singleton produit un avertissement?

Dans ma méthode de publication singleton, je ne fais rien:

 -(void) release {
  //A whole lot of nothing.
}
 

Mais cela produit cet avertissement:

Avertissement: Les modificateurs d'objet distribué en conflit sur le type de retour dans la mise en œuvre de 'release'

J'ai googlé et vu d'autres personnes avoir la même erreur, mais aucune explication de l'avertissement. Quelqu'un sait ce que l'avertissement est à propos?

92voto

ughoavgfhw Points 28400

Vous devez le déclarer oneway .

 - (oneway void) release {}
 

oneway est un mot clé utilisé avec des objets distribués pour indiquer que l'appel peut être effectué de manière asynchrone. Puisque l'en-tête NSObject l'utilise lorsqu'il déclare la méthode release , vous devez également l'utiliser. Cela n'affectera pas votre programme sauf si vous utilisez des objets distribués, mais cela satisfera le compilateur.

13voto

AliSoftware Points 21493

Dans NSObject.h, la définition de la méthode release renvoie oneway void .

Le mot clé oneway est utilisé pour les objets distribués.

Depuis Xcode4.2 et LLVM, les vérifications sont plus strictes et si cela avait été accepté par les versions précédentes de Xcode ou par gcc, vous devez maintenant ajouter ce mot clé oneway afin que le compilateur LLVM cesse de vous en avertir.

 -(oneway void) release { /* do nothing */ }
 

Cela n'aura aucun incident sur votre code.

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