Blogeintrag

 Startseite | Blog | Sitemap | Impressum | Login

05.01.10: NSOutlineView und reloadData:

Nach dem Ändern von Daten habe ich das NSOutlineView einfach mit reloadData: aktualisiert. Das klappte oft auch recht gut, ab und an blieb das Programm aber einfach hängen und brachte in einer Endlosschleife die Fehlermeldung:

Warning: reloadData called while in the middle of doing a reloadData !

Ich bin sicher, dass ich selbst reloadData: nur an einer einzigen Stelle aufrufe, aber evtl. ruft Cocoa selbst aus irgendwelchen Gründen diese Methode auch auf. Eine einfache Lösung für das Problem konnte ich nicht finden, das beste scheint wohl das überschreiben der reloadData:-Methode zu sein:

@interface SafeOutlineView : NSOutlineView {
BOOL _isReloading;
}

@end

@implementation SafeOutlineView

- (void)reloadData {
if (!_isReloading) {
_isReloading = YES;
[super reloadData];
_isReloading = NO;
} else {
[self performSelector:@selector(reloadData) withObject:nil afterDelay:0];
}
}

@end
Rubrik: Programmierung, Objective-C/Cocoa

Zurück zur Übersicht

Werbung
Look-Out
Talking about everything
Crazy audio
DIY audio projects and more
Anmesty International SchweizMenschenrechte für alle

Menschen für MenschenKarlheinz Böhms Äthiopienhilfe