gpt4 book ai didi

swift - KVO Swift : newValue is always nil

转载 作者:行者123 更新时间:2023-12-04 14:37:39 28 4
gpt4 key购买 nike

有以下例子:

import UIKit

@objc class ViewController: UIViewController {

@objc dynamic var buggyApple: NSObject?

var obs: NSKeyValueObservation?

override func viewDidLoad() {
super.viewDidLoad()
obs = observe(\.buggyApple, changeHandler: { (obj, change) in
print(change)
})
buggyApple = NSObject()
buggyApple = NSObject()
}
}

我在调试控制台中得到相应的输出:
NSKeyValueObservedChange<Optional<NSObject>>(kind: __C.NSKeyValueChange, newValue: Optional(nil), oldValue: Optional(nil), indexes: nil, isPrior: false)
NSKeyValueObservedChange<Optional<NSObject>>(kind: __C.NSKeyValueChange, newValue: Optional(nil), oldValue: Optional(nil), indexes: nil, isPrior: false)

在检查 ViewControllerLLDB 中回调内断点上的对象,我得到以下信息:
(lldb) po obj.buggyApple
▿ Optional<NSObject>
- some : <NSObject: 0x600000908fa0>

所以,事实上,新 NSObject已成功发送,然而, change仍然是引用 nil .我的代码是否有问题以及如何解决?

最佳答案

您需要提供new options 的选项observer 的输入参数在 change 中接收新值的方法.

obs = observe(\.buggyApple, options: [.new], changeHandler: { (obj, change) in
print(change)
})

关于swift - KVO Swift : newValue is always nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56427889/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com