Tag: 键值观察

目标C:对象释放,而关键值观察者仍然在其上注册

在将2个附加字段添加到我的核心数据模型后,我遇到了下面的错误。 CarPark_CarPark_ was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info: <NSKeyValueObservationInfo 0x1b6510> ( <NSKeyValueObservance 0x19b210: Observer: 0x1a8cf0, Key path: coordinate, Options: <New: […]

使用KVO与NSNotificationCenter观察对可变arrays的更改

在我的模型中,我有一个名为events的对象数组。 我想我的控制器被通知每当一个新的对象被添加到事件。 我认为这样做的好方法是使用KVO模式在事件发生变化时得到通知(从添加新对象开始) // AppDelegate // events is a NSMutableArray @property/@synthesize etc… [appDelagate addObserver:self forKeyPath:@"events" options:NSKeyValueObservingOptionNew context:NULL]; 但是, observeValueForKeyPath方法没有被调用,我发现数组不符合KVO 🙁 一种select是通过为keyPath调用willChangeValueForKey来手动触发该方法 // ViewController [self willChangeValueForKey:@"events"]; [self.events addObject:event]; [self didChangeValueForKey:@"events"]; 但是这样感觉很重,因为我应该跟踪事件数组的前后状态,以便可以通过observeValueForKeyPath方法来访问它。 一种方法是使用一个标准数组(而不是可变的),每次我想添加一个新的对象时创build/设置一个新的事件实例,或者我可以创build一个单独的属性来跟踪可变数组(我希望你可以观察@“events.count”)。 另一种select是使用NSNotificationCenter。 我也读过一些build议使用块的答案(但我不知道从哪里开始)。 最后,我是否可以在我的委托中保存我的控制器实例,并发送相关消息? // Delegate [myController eventsDidChange]; 从代表保持对控制器的引用是否很奇怪? 我正在努力了解如何select哪个是最好的方法来使用,所以任何有关性能,未来的代码灵活性和最佳实践的build议,将不胜感激!

KVO vs NSNotification vs协议/代表?

虽然我有一些想法用于什么时候,但确切的用法还不清楚。 有人可以用例子来解释吗? 谢谢。

KVO与UIKit的可靠性如何

重要提示:并非所有的课程都符合KVO标准。 您可以按照“KVO合规性”中所述的步骤确保您自己的课程符合KVO标准。通常,苹果提供的框架中的属性仅在符合KVO标准时才具有KVO合规性。 这句话让我感到困惑。 我们不能使用KVO作为UIKit对象吗? 我不记得有任何财产被logging为符合KVO。 尽pipe如此,我可以使用KVO许多属性。 这是否意味着我不能依靠它? 任何深入了解,将不胜感激。

iOS:如何知道某个媒体资源是否符合KVO标准?

在“ 键值观察编程指南”中 , 键值观察注册部分表示:“如果按照文档logging,则Apple提供的框架中的典型属性只有KVO兼容”。 但是,我没有发现文档中logging为符合KVO的任何属性。 你能指点我一些吗? 具体来说,我想知道UIWindow @property(nonatomic,retain) UIViewController *rootViewController是否符合KVO。 原因是我将rootViewController属性添加到UIWindow for iOS <4,并想知道是否应该使其符合KVO。 @interface UIWindow (Additions) #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_4_0 @property (nonatomic, retain) UIViewController *rootViewController; #endif; @end @implementation UIWindow (Additions) #if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_4_0 @dynamic rootViewController; – (void)setRootViewController:(UIViewController *)newRootViewController { if (newRootViewController != _rootViewController) { // Remove old views before adding the new one. […]

我怎样才能做关键值观察,并得到一个UIView帧的KVOcallback?

我想观察UIView frame , bounds或center属性的变化。 我怎样才能使用键值观察来实现呢?