- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我以前使用过 NSNotifications,但这是我第一次尝试在 Cocoa Touch 中使用 KVO。
我的 UITableView Controller 在各种数据源之间切换,因此我将它们封装在不同的 UITableViewDataSource 子类中。我试图让我的 View Controller 观察这些 UITableViewDataSource 子类中的特定一个,并跟踪一个名为 loadState
的枚举,该枚举反射(reflect)了模型的加载状态。
我这样设置观察者:
[self.siteUpdatesDataSource addObserver:self
forKeyPath:@"loadState"
options:0
context:nil];
从调试器中我可以看到观察者已注册:
(gdb) po [self siteUpdatesDataSource]
<SiteUpdatesTableViewDataSource: 0x651e5a0>
Current language: auto; currently objective-c
(gdb) po [[self siteUpdatesDataSource] observationInfo]
<NSKeyValueObservationInfo 0x651dd70> (
<NSKeyValueObservance 0x651dd10: Observer: 0xc80f1e0, Key path: loadState, Options: <New: NO, Old: NO, Prior: NO> Context: 0x0, Property: 0x651dd90>
)
但是,我的viewController 中的observeValueForKeyPath 方法似乎从未被调用。我设置了一个断点,但即使我验证枚举已更改,也不会到达该断点。
- (void) observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
[self.tableView reloadData];
}
我很感激对我所缺少的东西的任何想法。
最佳答案
看不出有什么问题。您确定通过调用合成访问器或使用 KVC 或手动更改 loadState
属性(使用 willChangeValueForKey:
和 didChangeValueForKey:
通知更改)?
关于iphone - KVO - 观察枚举时未调用observeValueForKeyPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5277836/
我正在使用观察者以下代码 myView = [[UIView alloc] initWithFrame:CGRectZero]; [myView addObserver:self forKeyPath
这是我第一次在 iOS 项目中使用 KVO,我想在通过 GPS 获取我的位置后观察我的两个 UILabel 的变化,并不断通知我。当我运行该项目时,我得到了 2 个显示日期的标签,它们随着时间而变化,
我正在开发一个测试应用程序,其中有一个 NSOperationQueue。我正在创建一个 NSInvocationOperation 并观察该操作的“isFinished”属性。奇怪的是,observ
observeValueForKeyPath 是否总是从主线程调用? 我正在记录通话 -(void) observeValueForKeyPath:(NSString *)keyPath
我有一个关于核心数据和通知的问题。看了 Apple 文档后,我没有找到答案。 问题是: 我有一个具有一对多关系的托管对象。我想知道什么时候从这个关系中添加或删除了一个对象。(“类别”有许多“项目”)我
我使用 KVO observe changes in a frame并相应地设置另一个框架 - (void)observeValueForKeyPath:(NSString *)keyPath ofO
我写了一个演示想尝试 KVO 编程,我找到了 observeValueForKeyPath当我只更改一次值时,方法总是执行两次,怎么了?请帮助我,谢谢 代码 状态同步器.h #import @in
这是我第一次使用 KVO,我马上就卡住了。问题是当调用 observeValueForKeyPath 时,我正在调用同一个类中的另一个方法。该方法只是显示一个警报 View 。我想的很简单,但警报 V
我在调用 observeValueForKeyPath 时遇到问题,但使用以下方法解决了它: observeValueForKeyPath not being called 不过,我想知道一般如何处理
我试图通过用单个 switch 语句替换典型的长字符串嵌套 if/else 语句来提高我的 KVO observeValueForKeyPath 实现的易读性。 到目前为止,唯一真正起作用的是: pr
我正在尝试使用 AVPlayer 创建一个视频播放器。从 youtube 加载视频。我希望当视频当前时间发生变化时,我的 uiSlider 和我的时间标签可以更新。我正在使用“observeValue
它是在属性更改后被调用(意味着属性 setter 已经从调用堆栈中弹出)还是在属性 setter 正在执行时被调用? Swift 有非常方便的 “Property observers”。 Obj-C
我已经使用乘数连接从循环中为连接的对等点实现了文件发送功能。即代码如下。 for connectedPeer in self.connectedPeers { let sendingPr
我有一个奇怪的问题。 我的类声明了一个只保留指向 C++ 对象的指针的属性: @property (assign) CPPObject *representedObject; 在那个 Obj-C 类的
我是 iOS 开发的新手,我想弄明白为什么我的应用程序会因 SIGABRT 消息而崩溃。我正在学习有关如何实现 Google Maps SDK 的教程 ( link),据我所知,我拥有相同的代码。 我
我有一个简单的 UIView 子项,我很困惑为什么会收到此错误(导致应用程序崩溃): [VideoView observeValueForKeyPath:ofObject:change:context
在this tutorial的帮助下我正在使用 Swift 向我的 View 添加一个进度条,但观察者没有收到任何自身调用。 // ViewController.swift import UIKit
我完全复制了 Apple documentation 中的示例使用以下方法观察键值: override func observeValueForKeyPath(keyPath: String?, o
我有一个 appDelegate,它有一个属性 myWindow of MyWindowClass。我需要从 myWindow 观察 bool 属性。比起我有一个 CustomViewControll
我想收到有关 NSMutableSet 中新插入的通知,因此这就是我正在做的事情,但出于某种原因,它没有调用 observeValueForKeyPath 方法 仅供测试: -(void)observ
我是一名优秀的程序员,十分优秀!