iOS APP 中的不可变模型以及一致性数据
今年早些时候,为了给用户,尤其是大部分海外的用户更快更清晰的体验,我们全面重构了我们的 iOS 应用。这次重构的其中一个目的是将我们的应用迁移到一个不可变模型的层面上。在这篇博客中,我将会讨论这样做的动机,并探索我们的新系统是如何处理模型的更新,从 API 读取新信息,以及保持数据持久性的。
为什么选择不可变模型?
因为现今许多应用都转而使用了不可变设计,‘不可变模型’已经成为了一个耳熟能详的术语。不可变性意味着再初始化后模型将不可再更改。但为何我们要使用他们呢?嗯,主要问题在于可变性在状态共享方面有一些问题。
想象这样一个情景,在一个模型可变的系统中,A 和 B 都保持引用指向 C。
如果 A 修改了 C,那么 A 和 B 都将会看到这个变更。这似乎并没有什么问题,但如果 B 并(