Korrektes management der addObserverForName:object:queue:usingBlock:

Ich bin noch neu in Blöcke in objective-c und Fragen, wenn ich diese Pseudo-code zu korrigieren. Ich bin mir nicht sicher, ob es genug ist, entfernen Sie einfach den Beobachter zu oder wenn ich zu rufen, removeObserver:name:Objekt:

-(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];
}

Update: ich erhalte intermittierende EXC_BAD_ACCESS aus diesem block, so kann dies nicht richtig sein.

InformationsquelleAutor der Frage seanalltogether | 2010-12-29

Schreibe einen Kommentar