Dans Mon code dispach_async block
Je ne peux pas accéder à global variables
. J'obtiens cette erreur Variable is not Assignable (missing _block type specifier)
.
NSString *textString;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
textString = [self getTextString];
});
Quelqu'un peut-il m'aider à découvrir la raison?
Vous devez utiliser le spécificateur __block lorsque vous modifiez une variable à l'intérieur d'un bloc, donc le code que vous avez donné devrait ressembler à ceci à la place:
__block NSString *textString;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,
(unsigned long)NULL), ^(void) {
textString = [self getTextString];
});
Les blocs capturent l'état des variables référencées à l'intérieur de leur corps, donc la variable capturée doit être déclarée mutable. Et la mutabilité est exactement ce dont vous avez besoin étant donné que vous définissez essentiellement cette chose.