このことを考慮:
id observer = [[NSNotificationCenter defaultCenter]
addObserverForName:MyNotification
object:nil
queue:nil
usingBlock:^(NSNotification *note) {
[[NSNotificationCenter defaultCenter]
removeObserver:observer
name:MyNotification
object:nil
];
// do other stuff here...
}
];
このパターンを使用して、通知を一度観察してから観察を停止しています。しかし、LLVM は (ARC の下で)ブロックによってキャプチャされたときに変数 'observer' が初期化されていないことを教えてくれます。
ブロックは初期化の前に必ず変数をキャプチャし、初期化子の一部であるため、これを修正するにはどうすればよいですか? __block
修飾子 onを使用するとobserver
うまくいきますか?