我在尝试解决此循环引用时遇到问题。
首先我有两个NSManagedObject
ACoreData
和BCoreData
我想将模型从DataBase层分离到UI模型。
因此,我创建了A
和B
类,这些类将在UI中。
我创建了一个协议(Convertible
)ACoreData
和BCoreData
将实现转换为ui对象。
到目前为止一切顺利,但现在我遇到了问题。每次我从ACoreData
调用转换时,它都会创建一个新的A
,它将分配转换的BCoreData
,但BCoreData
对象将再次为{{{ 1}}对象。我最终会得到一个相互呼叫A
的循环。
这是代码:
convert()
您知道如何解决此问题以避免此圈参考中的循环?
提前致谢。
答案 0 :(得分:0)
我建议最好的解决方案是不要这样做。您为代码添加了很多复杂性,没有真正的优势。权衡您将托管对象远离UI所看到的好处,以及始终需要转换到托管对象或从托管对象转换的额外复杂性,在其中一个更改时将值从一个复制到另一个,保留重复的内存命中周围的数据副本,也可能是我还没有想过的其他东西。 "清洁"在可维护性和性能方面,架构将花费你很多。
如果您不希望UI了解托管对象,请定义托管对象采用的协议。使用UI实现协议"而不是托管对象。保持UI不知道数据存储的细节不需要重复的数据模型。