草庐IT

ios - 使用 KVO 观察 UIView 的 subview 数组的变化

我四处寻找这个问题的答案,并尝试实现它,但没有任何效果。基本上,我需要能够观察VCView的subview数组中的变化。如果从该数组中删除现有View,我希望收到有关它的通知并运行一些代码。这可能吗?编辑-更多信息我正在尝试修复一个奇怪的边缘情况错误,快速点击UISearchDisplayController(非常自定义)的UISearchBar会导致sdController(或者更确切地说是navBar效果中的托管搜索栏)从View中消失,但是sdController仍处于事件状态。这意味着导航栏保持在-y原点,下面的tableView不可滚动。我最初的想法是进入sdControll

objective-c - iOS:我如何知道一个属性是否符合 KVO 标准?

在Key-ValueObservingProgrammingGuide,第RegisteringforKey-ValueObserving说“通常情况下,Apple提供的框架中的属性只有在被记录为这样的情况下才符合KVO。”但是,我没有在文档中找到任何被记录为符合KVO的属性。你能给我指出一些吗?具体来说,我想知道UIWindow的@property(nonatomic,retain)UIViewController*rootViewController是否符合KVO。原因是我将rootViewController属性添加到UIWindowforiOS@interfaceUIWindo

iOS 11。KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED 是什么意思?

在新的iOS11中,我遇到了一些奇怪的异常。我不明白为什么会这样。在之前的iOS中,没有这样的异常。附加日志:Crashed:com.apple.main-thread0libobjc.A.dylib0x180a5e7e8object_isClass+161Foundation0x181f013e8KVO_IS_RETAINING_ALL_OBSERVERS_OF_THIS_OBJECT_IF_IT_CRASHES_AN_OBSERVER_WAS_OVERRELEASED_OR_SMASHED+682Foundation0x181eff8ecNSKeyValueWillChangeWi

ios - 使用 KVO 与 NSNotificationCenter 观察可变数组的变化

在我的模型中,我有一组称为事件的对象。我希望每当有新对象添加到事件时通知我的Controller。我认为一个好的方法是使用KVO模式在事件发生变化时(从添加的新对象)得到通知//AppDelegate//eventsisaNSMutableArray@property/@synthesizeetc...[appDelagateaddObserver:selfforKeyPath:@"events"options:NSKeyValueObservingOptionNewcontext:NULL];但是observeValueForKeyPath方法没有被调用,我发现数组不符合KVO:-(

ios - 简单的 KVO 例子

我正在尝试做简单的KVO示例,但我遇到了问题。这是我的*.m文件:#import"KVO_ViewController.h"@interfaceKVO_ViewController()@propertyNSUIntegernumber;@end@implementationKVO_ViewController-(void)viewDidLoad{[superviewDidLoad];//Doanyadditionalsetupafterloadingtheview,typicallyfromanib.[selfaddObserver:selfforKeyPath:@"number"op

iphone - KVO vs NSNotification vs 协议(protocol)/代表?

我知道什么时候使用哪个,但我仍然不清楚确切的用法。有人可以举例说明吗? 最佳答案 如果您只想与一个对象对话,请使用委托(delegate)。例如,tableView有一个委托(delegate)-只有一个对象应该负责处理它。如果您想告诉所有人发生了某事,请使用通知。例如,在内存不足的情况下,会发送一条通知,告诉您的应用程序存在内存警告。因为您应用中的许多对象可能想要降低它们的内存使用量,所以这是一个通知。我认为KVO根本不是一个好主意,尽量不要使用它,但是,如果你想知道属性是否发生了变化,你可以监听变化。希望对您有所帮助。附言Thi

ios - KVO和ARC如何移除Observer

如何从ARC下的对象中删除观察者??我们是否只添加观察者而忘记删除它?如果我们不再手动管理内存,我们从哪里退出观察?例如,在ViewController上:[self.viewaddObserver:selfforKeyPath:@"self.frame"options:NSKeyValueObservingOptionNewcontext:nil];以前,我会在ViewController的dealloc方法中调用removeObserver:。 最佳答案 您仍然可以在ARC下实现-dealloc,这似乎是移除键值观察的合适位置。

KVO 时 iOS 11 AVPlayer 崩溃

我在使用AVPlayer播放远程视频时遇到奇怪的崩溃。从Fabric的崩溃日志来看,应用程序在系统线程(com.apple.avfoundation.playerlayer.configuration)上崩溃。崩溃日志如下:Crashed:com.apple.avfoundation.playerlayer.configuration0libsystem_kernel.dylib0x1839ac2e8__pthread_kill+81libsystem_pthread.dylib0x183ac12f8pthread_kill$VARIANT$mp+3962libsystem_c.dyl

Swift 4 (BETA 2) KVO 崩溃,基于 WWDC 谈话

我正在尝试获得与WWDC2017基金会演讲中为KVO观察工作的示例非常相似的内容。我看到的与那个谈话唯一不同的是,我必须调用super.init(),并且我必须隐式解包“kvo”标记。以下是在playground中使用的:structNode{lettitle:Stringletleaf:Boolvarchildren:[String:Node]=[:]}lett=Node(title:"hello",leaf:false,children:[:])letk1=\Node.leafletk2=\Node.childrent[keyPath:k1]//returns"false"work

ios - 如何在 Swift 中为 UserDefaults 使用 KVO?

我正在重写应用程序的一部分,并找到了这段代码:fileprivateletdefaults=UserDefaults.standardfuncstoreValue(_value:AnyObject,forKeykey:String){defaults.set(value,forKey:key)defaults.synchronize()NotificationCenter.default.post(name:Notification.Name(rawValue:"persistanceServiceValueChangedNotification"),object:key)}funcg