私はまだobjective-cのブロックに慣れておらず、この疑似コードが正しいかどうか疑問に思っています。オブザーバーを削除するだけで十分なのか、removeObserver:name:object:を呼び出す必要があるのかわかりません。
-(void) scan {
Scanner *scanner = [[Scanner alloc] init];
id scanComplete = [[NSNotificationCenter defaultCenter] addObserverForName:@"ScanComplete"
object:scanner
queue:nil
usingBlock:^(NSNotification *notification){
/*
do something
*/
[[NSNotificationCenter defaultCenter] removeObserver:scanComplete];
[scanner release];
}];
[scanner startScan];
}
更新:このブロックから断続的に受信しているEXC_BAD_ACCESS
ので、これは正しくありません。