что означает __block в образце кода Apple c? - PullRequest
2 голосов
/ 02 мая 2020

Когда прочитал документ NotificationCenter, я нашел пример кода ниже. Я хочу уточнить, что здесь означает __block? Я знаю, что при использовании __block переменная может изменяться в блоке, но токен не меняется.

    NSNotificationCenter * __weak center = [NSNotificationCenter defaultCenter];
    id __block token = [center addObserverForName:@"OneTimeNotification"
                                           object:nil
                                            queue:[NSOperationQueue mainQueue]
                                       usingBlock:^(NSNotification *note) {
                                           NSLog(@"Received the notification!");
                                           [center removeObserver:token];
                                       }];

1 Ответ

2 голосов
/ 02 мая 2020

Позволяет использовать token в блоке построения инициализации, указывая, что его значение будет изменено позже, поэтому может использоваться в блоке.

В противном случае вы получите, как показано ниже. demo

...