作为同步解决方案的一部分,我将 async status
用于某个类的所有对象。每当该对象的特定(不是全部)属性发生变化时,我都想更新状态。
我正在考虑四种方法:
- 在我更改需要同步的内容时手动设置代码中的状态。这是最明显的,但也是最费力和最容易出错的(我需要记住,在添加新功能时还要添加同步状态更新)。
- 使用核心数据通知(例如
willSave
或NSManagedObjectContextObjectsDidChangeNotification
)跟踪它。乍一看,这似乎是最合适的——我只需在我的 AppDelegate 中注册通知并每次更新状态。但是是否可以检查更改并仅在我关心的属性更新时才更新同步状态?另外,设置本身不会sync_status
触发此通知,导致我陷入无限循环吗?我将如何解决这个问题? - 我关心的属性的自定义设置器。我之前在尝试让它工作时遇到了麻烦,最终决定尝试不理会标准的核心数据获取器/设置器。但如果它是最合适的,我会深入研究。
- KVO。我以前没有使用过这种模式,但最简单的方法可能是为我关心的人注册属性更改通知并在那里设置标志。但是我会在哪里做呢?我需要监视该类的每个对象,那么是否可以开始在同一个对象中观察属性的 KVO 通知
awakeFromInsert
?即,每当创建一个对象时,立即让同一个对象监听attributeA 的更改并sync_status
在它触发时将其设置为自己的?
这些方法中哪一种最适合我?也许我错过了其他一些想法?