gpt4 book ai didi

ios - 如何在 Swift 4 中使用#keyPath()?

转载 作者:搜寻专家 更新时间:2023-10-31 22:01:24 26 4
gpt4 key购买 nike

我认为我的部分问题是因为 Swift 4 改变了像 @objc 这样的东西的工作方式。

周围有很多教程,有很多不同的值,我无法在过去在哪个版本中工作的方法之间做出选择,以弄清楚如何让它在 this< 中工作/em> 版本。

let delegate = UIApplication.shared.delegate as! AppDelegate
delegate.addObserver(self, forKeyPath: #keyPath(AppDelegate.session), options: [], context: nil)
// Warning: Argument of #keyPath refers to non-'@objc' property 'session'

@objc 添加到 var 声明只是告诉我 APISession 不能在 Objective-C 中引用。这似乎导致要求我向 Obj-C 公开我想使用此工具的每个类/变量,这似乎是倒退——据我所知,这是一个较新的功能,而且很奇怪Apple 不会让它在 Swift 中原生运行。对我来说,这表明我在某处以某种方式误解或误用了某些东西。

最佳答案

根据docs :

In Objective-C, a key is a string that identifies a specific property of an object. A key path is a string of dot-separated keys that specifies a sequence of object properties to traverse.

值得注意的是,在标题为“与 Objective-C API 交互”的部分中可以找到对 #keyPath 的讨论。 KVO 和 KVC 是 Objective-C 的特性。

文档中的所有示例都显示了继承自 NSObject 的 Swift 类。

最后,当您在 Xcode 中键入 #keyPath 时,自动完成会告诉您它需要一个 @objc 属性序列

enter image description here

使用 #keyPath 输入的表达式将由编译器检查(很好!),但这并不会消除对 Objective-C 的依赖。

关于ios - 如何在 Swift 4 中使用#keyPath()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47361685/

26 4 0
文章推荐: php - 在 PHP 中使用水印显示多个图像
文章推荐: javascript - 制作具有链接行为的 html 按钮的最佳方法是什么?
文章推荐: php - Doctrine MappedSuperclass 和唯一约束
文章推荐: html - 在