2
votes

Comment désactiver Block retient implicitement l'avertissement `` auto '' dans Xcode 10

Comment désactiver cet avertissement dans Xcode? Je comprends le message d'avertissement, je veux simplement le supprimer.

Le bloc retient implicitement le «soi»; mentionner explicitement `` soi '' pour indiquer qu'il s'agit d'un comportement intentionnel


1 commentaires

Au lieu d'essayer de le supprimer, corrigez le code en faisant ce qu'indique l'avertissement.


3 Réponses :


2
votes

Ajoutez -Wno-implicit-retain-self à l'entrée appropriée dans vos paramètres de génération. Pour la liste complète, voir les drapeaux de diagnostic à Clang


3 commentaires

Merci! Quelle est l'entrée appropriée dans les paramètres de construction?


@BerryBlue - quelque chose de l'IIRC dans le sens des "drapeaux supplémentaires du compilateur" (je suis sur une tablette - pas de Xcode)


Merci! Le champ s'appelle "Autres indicateurs d'avertissement".



0
votes

Il est possible de supprimer certains codes dans une classe.

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wimplicit-retain-self"

.. code ..

#pragma clang diagnostic pop


0 commentaires

0
votes

L'avertissement est intentionnel. Le simple fait de le désactiver peut entraîner des fuites de mémoire. Vous pouvez utiliser quelque chose comme ceci:

__weak __typeof(self) weakSelf = self;
dispatch_async(self.queue, ^{
        __typeof(self) strongSelf = weakSelf;
        ...
        [weakSelf someMethod];
});


0 commentaires