2016-07-28 69 views
0

如何在stackoverflow question中提到的读写器模式可用于UI更新?如果我们为UICollectionView的数据源使用带有读写器模式的数组(如该问题中提到的),那么集合视图的insert/delete/reload方法调用将如何使用?简而言之,我想知道UI部分如何适合这种读写器模式代码?Swift:Array读写器模式和UICollectionView更新

回答

0

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

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