我正在为微控制器中的大学课程做UI。它是用于控制不同房间温度的温度控制器的用户界面。对于每个房间,我都有一个RoomViewController(NSViewController子类)的实例,它管理着一个相应的视图,该视图显示了用户可以更改的当前温度和目标温度。如何防止递归KVO通知?
我的意图是使用Cocoa绑定将目标温度显示的值绑定到RoomViewController中的一个属性,然后让另一个类监听这些属性以通过串行将这些更新发送到微控制器。问题是,改变也可能来自微控制器,这意味着我必须以编程方式设置属性,因为来自微控制器的事件。这会导致一个属性更改通知,导致更改MCU中的值,这会导致来自MCU的事件,这会导致属性更改等。它会变成一个无限循环。
如何避免KVO中的反馈回路?
由于来自MCU的事件,我不希望完全生成属性更改事件。如果MCU告诉我值已经改变,我不希望发送属性更改事件,因为这会导致应用程序更改刚刚报告的MCU中的值,这是不必要的。只有当用户手动编辑值时,才会发生更改事件。但是也许KVO不能以这种方式使用。 – 2012-03-15 09:48:14