Je suis en train de lire Xcode de la documentation, ici est quelque chose qui m'intrigue, c':
__block typeof(self) tmpSelf = self;
[self methodThatTakesABlock:^ {
[tmpSelf doSomething];
}];
La suite est copié à partir de la documentation:
Un bloc forme d'un solide de référence à des variables, il capture. Si vous utilisez auto à l'intérieur d'un bloc, le bloc forme d'un solide de référence à soi-même, donc si l'auto dispose également d'une solide référence pour le bloc (qui, d'habitude, il n'), un cycle de référence résultats. Pour éviter le cycle, vous devez pour créer une faible (ou __) bloc de référence à soi à l'extérieur du bloc, comme dans l'exemple ci-dessus.
Je ne comprends pas ce que signifie " une faiblesse (ou __bloquer)"?
Est
__block typeof(self) tmpSelf = self;
et
__weak typeof(self) tmpSelf = self;
exactement la même chose ici?
Cependant, j'ai trouvé un autre morceau dans le Xcode du document:
Remarque: Dans un garbage collector de l'environnement, si vous appliquez __faibles et __bloquer les modificateurs à une variable, puis le bloc ne sera pas vous assurer qu'il est maintenu en vie.
Donc, je suis totalement perplexe.