- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为大学微 Controller 类(class)制作 UI。它是温度 Controller 的用户界面,用于控制不同房间的温度。对于每个房间,我都有一个 RoomViewController (NSViewController 子类)的实例,它管理相应的 View ,该 View 显示当前温度和用户可以更改的目标温度。
我的目的是使用 Cocoa 绑定(bind)将目标临时显示的值绑定(bind)到 RoomViewController 中的属性,然后让另一个类监听这些属性以通过串行将这些更新发送到微 Controller 。问题是,更改也可能来自微 Controller ,这意味着由于来自微 Controller 的事件,我必须以编程方式设置属性。这将导致属性更改通知,从而导致 MCU 中的值发生更改,从而导致来自 MCU 的事件,从而导致属性更改等。它会变成无限循环。
如何防止 KVO 中出现这种反馈循环?
最佳答案
测试(你说这是大学类(class)!):
a) 将属性设置为其当前值是否会导致 KVO 更改通知?
b) 在从 MCU 接收事件时,如果您不更改属性,如果新值相同,这会破坏您的周期吗?
c) 想想你可以做的另一个测试!
评论回复
我假设您已经测试了 (a) 和 (b),并发现它们并没有完全满足您的要求。那么也许您想要的是带有两个 setter 的单一属性?一名二传手触发 KVO,另一名二传手则不会...
现在您正在谈论温度,因此您的属性可能是某种数字类型。它是一个包装数字,如 NSNumber
中,还是一个原始数字,如 double
中?
让我们假设后者,因为前者(很多)参与得更多!
所以:
double
,由相同类型的实例变量支持。@syntheize
该属性让编译器创建一个 setter 和一个 getter,用于更改/检索该实例变量中的值。问题已解决。可以吗?
关于cocoa - 如何防止递归 KVO 通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9715865/
当我的应用程序关闭时,主 Controller 类将其自身作为观察者从模型中删除,然后释放模型。像这样: - (void)dealloc { [theModel removeObserver:
我正在努力加深对这些机制的理解。我有一个启用触摸的 UIView,可以更新它自己的 center 属性。 我的理解是frame属性是center和bounds的合成函数。假设这是真的,我将一个观察者放
我正在尝试使用 KVO 来观察在我的页面 View Controller 的子内容 View Controller 的 ScrollView 中使用拖动时的更新变化,但是当应用程序启动时,它崩溃了说:
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
我尝试使用 KVO 观察 UIView 子类上的属性,以便通过调用 drawRect: 触发绘制。在我的 initWithFrame: 中,我有这个: ... self.observedKeysTha
我以前使用过 NSNotifications,但这是我第一次尝试在 Cocoa Touch 中使用 KVO。 我的 UITableView Controller 在各种数据源之间切换,因此我将它们封装
我遇到了 KVO 问题,但我不知道它是什么。 我有一个可用于编辑或创建记录的屏幕。该记录由一个模型对象表示,该对象包含许多 NSString 类型的变量。 该字符串的 Controller 有一个实例
这个问题已经有答案了: In Cocoa KVO, why doesn't a change on a NSMutableArray proxy notify observers? (1 个回答) 已
当我想观察保留属性的变化时,我经常遇到这样的情况: @interface AnObserver {…} @property(retain) Foo *foo; 现在,当我想要设置观察时,我需要编写自己
我定义了两个具有相应 ivars 的属性并合成了它们: @property (nonatomic,copy) NSString* title; @property (nonatomic,copy) N
我试图掌握绑定(bind),并在 xcode 中设置了一个带有 CPTextView 的 CPWindow,并将窗口和 textview 绑定(bind)到它们各自的导出。 我有点卡住了,但是试图让
一定有一些我对 KVO 没有了解的地方,我试图通过滚动 UIScrollView 来滚动 UITableView,偏移量转换是正确的,但是 UITableView 滚动发生在 UIScrollView
我正在学习 MVVM,所以我在属性上添加了观察者 init(model: RegisterUserModel = RegisterUserModel()) { self.registerMo
我的 iPhone 应用程序核心数据属性的自定义访问器方法有问题。我想做的不仅仅是取出原始类型并返回它。我有一个可能的 activityTypes 的 NSSet,如果对象没有 primitiveTy
事情是这样的:我有一个单例监视设备的事件存储的变化。我有一个名为 events 的属性,我已将其包装在 eventsSignal RACSignal 中。 _eventsSignal = [RACAb
我得到的 iOS 应用 实体很少,它们由关系链接。举一个简单的例子,假设我们有这样的关系(一对多): company > person 我正在使用 xcode 4.6 和用于模型生成的核心数据建模工具
我在 iOS 应用程序中遇到 KVO 问题。我似乎无法正确处理。我正在尝试做什么: 我有一个 MenuViewController(可在左侧显示,如 facebook 应用程序)观察(并显示)全局值。
我试图通过以下代码从其他对象观察 UIViewController 的 KVO 的界面方向: [((UIViewController *)self.delegate) addObserver:self
我正在尝试使用 KVO 在 UILabel 和对象数据之间创建一个小型绑定(bind)系统。如果我的 UI 发生变化,我的数据也必须发生变化,如果我的数据发生变化,我的 UI 应该刷新以显示新值。 我
如果我在我的 iOS 应用程序上设置了本地通知,我将更新一个按钮。我想用 KVO 做到这一点,因为可以通过多种方式设置通知,所以我将无法轻松跟踪本地通知何时发生更改,否则。 我是这样设置的:
我是一名优秀的程序员,十分优秀!