key-value-observing相关内容

设置SWIFT对象/属性的观察器

我一直在寻找一种方法,以便在连接到Mac的显示器数量发生变化时触发方法。我知道我可以获取NSScreen.creens.count的值,但我需要找到一种方法,以便在该值发生更改或其他指示连接的显示器数量发生变化时创建通知或其他内容。 我尝试过KVO示例here和here,但为了让这两个示例中的任何一个正常工作,需要有一个触发类内方法的事件。 本质上,这就是我想要基于第一个链接所做的事情 ..
发布时间:2022-04-06 12:22:04 移动开发

使用 UIKit 的 KVO 有多可靠

重要提示:并非所有课程都是所有属性都符合 KVO.你可以确保您自己的课程是按照以下步骤符合 KVO“KVO 合规性"中描述.Apple 提供的典型属性框架仅在以下情况下才符合 KVO它们被记录在案. 这句话让我很困惑.我们不能对 UIKit 对象使用 KVO 吗?我不记得看到任何属性被记录为符合 KVO 标准.尽管另有说明,但我可以使用具有许多属性的 KVO.这是否意味着我不能依赖它? ..
发布时间:2022-01-23 10:35:43 移动开发

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

在我的模型中,我有一个称为事件的对象数组.我希望每当将新对象添加到事件时通知我的控制器. 我认为这样做的一个好方法是使用 KVO 模式在事件发生变化时获得通知(来自添加的新对象) //AppDelegate//events 是一个 NSMutableArray @property/@synthesize 等...[appDelagate addObserver:selfforKeyPath ..

如何找到符合 KVC 标准的 Objective-C 对象的所有属性键?

是否有一种方法可以返回符合 NSKeyValueCoding 协议的对象的所有键? 与 [object getPropertyKeys] 类似的东西将返回 NSString 对象的 NSArray.它适用于任何 KVC 兼容的对象.有这样的方法吗?到目前为止,我在搜索 Apple 文档时没有发现任何内容. 谢谢,G. 解决方案 #import "objc/runtime.h"无 ..

观察 Objective-C 中任何类属性的变化

简单地说,有没有办法在 Objective-C 类中的任何属性发生更改时接收一般通知?我知道我可以使用 KVO 来监视特定的属性更改,但是每当任何 setProperty: 消息发送到我的类时,我都需要调用特定的方法.我希望能够收到通用通知,而无需担心具体修改了哪个属性. 如果它有助于澄清我为什么要这样做,我正在使用这里找到的一些快速表格滚动代码:http://blog.atebits.co ..

如何检测 Objective-C 中的属性返回类型

我在运行时在objective-c中有一个对象,我只知道KVC密钥,我需要检测这个属性的返回值类型(例如我需要知道它是NSArray还是NSM​​utableArray),怎么能我这样做? 解决方案 你说的是运行时属性自省,这恰好是 Objective-C 的东西 非常擅长. 在你描述的情况下,我假设你有一个这样的类: @interface MyClass{NSArray * 东西 ..

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

在我的模型中,我有一组称为事件的对象.我希望每当向事件添加新对象时都会通知我的控制器. 我认为这样做的一个好方法是使用 KVO 模式在事件发生变化时获得通知(来自添加的新对象) //AppDelegate//events 是一个 NSMutableArray @property/@synthesize 等等...[appDelagate addObserver:selfforKeyPath ..

iOS:我如何知道一个属性是否符合 KVO?

在键值观察编程指南,部分 注册 Key-Value Observing 说“通常,Apple 提供的框架中的属性只有在记录时才符合 KVO."但是,我没有在文档中找到任何符合 KVO 的属性.你能指点我吗? 具体来说,我想知道 UIWindow 的 @property(nonatomic,retain) UIViewController *rootViewController 是否符合 KV ..
发布时间:2021-12-20 23:13:27 移动开发

如何判断对象是否附加了键值观察器

如果你告诉一个客观的 c 对象 removeObservers: 对于一个关键路径并且那个关键路径还没有被注册,它会破坏悲伤.喜欢 - '无法从中删除关键路径“theKeyPath"的观察者,因为它没有注册为观察者.' 有没有办法确定一个对象是否有一个注册的观察者,所以我可以这样做 if(对象有观察者){移除观察者}别的{继续我的快乐之路} 解决方案 在 removeObserv ..
发布时间:2021-12-17 23:12:20 移动开发

为什么要使用 ivar?

我通常看到这个问题以另一种方式被问到,例如必须每个 ivar成为财产?(我喜欢 bbum 对这个问题的回答). 我几乎只在我的代码中使用属性.然而,我经常与一位长期在 iOS 上进行开发并且是传统游戏程序员的承包商合作.他编写的代码几乎不声明任何属性,并且依赖于 ivars.我认为他这样做是因为 1.) 他已经习惯了,因为直到 Objective C 2.0(2007 年 10 月)和 2. ..

如何进行键值观察并在 UIView 的框架上获得 KVO 回调?

我想观察 UIView 的 frame、bounds 或 center 属性的变化.我如何使用键值观察来实现这一点? 解决方案 通常存在不支持 KVO 的通知或其他可观察事件.即使文档说'不',观察支持 UIView 的 CALayer 表面上是安全的.观察 CALayer 在实践中是有效的,因为它广泛使用了 KVO 和适当的访问器(而不是 ivar 操作).不能保证它会继续工作. ..
发布时间:2021-12-02 18:16:39 移动开发

Swift 中是否提供键值观察 (KVO)?

如果是这样,在 Objective-C 中使用键值观察时是否存在任何不存在的关键差异? 解决方案 (Edited to add new info): 考虑使用Combine 框架是否可以帮助你完成你想要的,而不是使用KVO 是和否.KVO 像往常一样在 NSObject 子类上工作.它不适用于没有子类化 NSObject 的类.Swift 没有(至少目前)有自己的原生观察系统. ..
发布时间:2021-12-02 15:48:13 移动开发

单元格的父vc中的Swift -AVPlayer'KVO导致Xcode冻结

我有一个占据整个屏幕的单元格,因此一次只有1个可见单元格.在单元内,我有一个AVPlayer.在单元的父vc内,我有一个监听"timeControlStatus"的KVO观察器.当播放器停止播放时,我在单元格内调用函数stopVideo()停止播放器,并显示重播按钮或播放按钮等. 3个问题: 1-如果如果我不使用KVO内的DispatchQueue,则视频停止/播放结束时,调用该单元的 ..