Hallo,
folgendes ist vorhanden:
* ein NSTableView
* ein NSArrayController (gefüllt mit ManagedObjects)
Die Columns des TableViews sind an den ArrayController gebunden. Nun füge ich an zwei Stellen im Code auf identische Weise ManagedObjects hinzu. Beim einen Mal funktioniert das wunderbar - die neuen Objekte werden unverzüglich in der TableView angezeigt.
Bei meinem zweiten Versuch die Objekte im Code zu erzeugen muss ich zunächst ein Mal das fenster anklicken, bis die Änderung wirksam wird. Zu doof.
Der einzige Unterschied ist der folgende:
Beim einen Mal erzeuge ich die Objekte in einer "normalen" Methode und das andere Mal in einer Art delegate-methode, die aus einem Thread heraus aufgerufen wird.
In meiner Thread methode, die mit detachNewThreadSelector:toTarget:withObject aufgerufen wird rufe ich meine methode, die die ManagedObjects erzeugt wie folgt auf:
[target performSelectorOnMainThread:@selector(erzeugeManagedObjects:) withObject:nil waitUntilDone:YES];
Das ist ja quasi nichts weiter als eine Art Delegate methode, die da aufgerufen wird. Oder könnte genau das das Problem sein?
folgendes ist vorhanden:
* ein NSTableView
* ein NSArrayController (gefüllt mit ManagedObjects)
Die Columns des TableViews sind an den ArrayController gebunden. Nun füge ich an zwei Stellen im Code auf identische Weise ManagedObjects hinzu. Beim einen Mal funktioniert das wunderbar - die neuen Objekte werden unverzüglich in der TableView angezeigt.
Bei meinem zweiten Versuch die Objekte im Code zu erzeugen muss ich zunächst ein Mal das fenster anklicken, bis die Änderung wirksam wird. Zu doof.
Der einzige Unterschied ist der folgende:
Beim einen Mal erzeuge ich die Objekte in einer "normalen" Methode und das andere Mal in einer Art delegate-methode, die aus einem Thread heraus aufgerufen wird.
In meiner Thread methode, die mit detachNewThreadSelector:toTarget:withObject aufgerufen wird rufe ich meine methode, die die ManagedObjects erzeugt wie folgt auf:
[target performSelectorOnMainThread:@selector(erzeugeManagedObjects:) withObject:nil waitUntilDone:YES];
Das ist ja quasi nichts weiter als eine Art Delegate methode, die da aufgerufen wird. Oder könnte genau das das Problem sein?
Die Objective-Cloud ist fertig wenn sie fertig ist. Beta heißt Beta.
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].
Objective-C und Cocoa Band 2: Fortgeschrittene
Cocoa/Objective-C Seminare von [co coa:ding].