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

