我有一个支持NSCoding
的对象图表。我有一个单独的类来处理序列化本身,即。它检测对象图中的更改,并使用NSKeyedArchiver
将其保存到文件中。
我对设计很满意,但我不确定如何观察对象图中的变化。我想到的一个通用解决方案是为每个对象添加一个version
属性,每次更改都会增加:
- (void) setFoo: (id) newFoo
{
_foo = newFoo;
self.version++;
}
当图形中的对象引用其他对象时,它会观察它们的version
(使用KVO),如果它发生变化,则向上传播变化。然后,序列化类将观察根节点的version
。
这很有效,但管理所有KVO的东西很麻烦,容易出错。你能想到更好的解决方案吗?另一个限制是我希望对象尽可能少地了解序列化。他们应该知道如何序列化(通过实施NSCoding
),但他们不应该关心更多。
这必须是序列化框架中的常见问题,对吧?