Swift:数组读写器模式和UICollectionView更新

时间:2016-07-28 19:21:10

标签: ios swift uicollectionview

stackoverflow question中提到的reader / writer模式如何用于UI更新?如果我们使用具有读取器/写入器模式的数组(如该问题中所述)用于UICollectionView的数据源,那么将如何使用集合视图的insert / delete / reload方法调用?简单来说,我想知道UI部分如何适合这种读写器模式代码?

1 个答案:

答案 0 :(得分:0)

UI上的任何内容都必须在主线程上运行,并且对象数组不是线程安全的。因此,如果您想要从主线程以外的线程编辑数据,并为UI(从主线程)读取它,则可能会遇到意外问题。链接中的读取器/写入器模式通过确保写入只能一个接一个地发生(同步)来确保线程安全。然后,您可以从后台线程编辑数据源并安全地更新主线程上的uicollectionview,而不会导致应用程序偶尔崩溃。

但是,如果数据源包含核心数据对象,则必须从在主线程上运行的托管对象上下文中获取对象。如果使用在后台线程上运行的托管对象上下文编辑数据,则必须将更改推送回父上下文,然后使用在主线程上运行的moc读取它,然后再使用数据更新集合视图。在这种情况下,读写器模式对你没有帮助。