2016-07-28 6 views
0

Wie das Leser/Schreiber-Muster wie im Stackoverflow question für UI-Updates funktioniert? Wenn wir ein Array mit einem Leser/Schreiber-Muster (wie in dieser Frage erwähnt) für die Datenquelle einer UICollectionView verwenden, wird dann verwendet, wie die Aufrufe der Einfüge-/Lösch-/Neulade-Methode der Sammlungsansicht verwendet werden. In einfachen Worten, ich möchte wissen, wie UI-Teil in solche Leser-Schreiber-Muster-Code passt?Swift: Array Reader-Writer-Muster und UICollectionView Updates

Antwort

0

Alles auf der Benutzeroberfläche muss im Hauptthread ausgeführt werden, und Arrays von Objekten sind nicht threadsicher. Wenn Sie also die Daten von anderen Threads als dem Hauptthread bearbeiten und sie für die Benutzeroberfläche (aus dem Hauptthread) lesen möchten, können unerwartete Probleme auftreten. Das Leser/Schreiber-Muster von der Verbindung stellt Thread-Sicherheit sicher, indem sichergestellt wird, dass die Schreibvorgänge nur nacheinander (synchron) stattfinden können. Sie können dann Ihre Datenquelle aus Hintergrundthreads bearbeiten und die uicollectionview im Hauptthread sicher aktualisieren, ohne dass die App gelegentlich abstürzt.

Wenn Ihre Datenquelle jedoch Kerndatenobjekte enthält, müssen Sie die Objekte aus einem Kontext für verwaltete Objekte abrufen, der im Hauptthread ausgeführt wird. Wenn Sie die Daten mithilfe eines verwalteten Objektkontexts bearbeiten, der in einem Hintergrundthread ausgeführt wird, müssen Sie die Änderungen zurück in einen übergeordneten Kontext übertragen und dann mithilfe eines Moc im Hauptthread lesen, bevor Sie die Datensammlung zum Aktualisieren der Sammlungsansicht verwenden . Das Leser/Schreiber-Muster wird Ihnen in solchen Fällen nicht helfen.