相关疑难解决方法(0)

AVQueuePlayer.timeControlStatus上的KVO总是给出nil值

我正在使用KVO监控AVQueuePlayer.timeControlStatus:

timeControlStatusObservation = avPlayer.observe(
    \AVQueuePlayer.timeControlStatus,
    options: [.old, .new],
    changeHandler: {
        [weak self] (player, change) in
        print("timeControlState: \(change.oldValue), \(change.newValue), \(self?.avPlayer.timeControlStatus)")
    })
Run Code Online (Sandbox Code Playgroud)

change.oldValue并且change.newValue总是零,但avPlayer.timeControlStatus确实有正确的价值.我得到了以下日志:

timeControlState: nil, nil, Optional(playing) 
timeControlState: nil, nil, Optional(paused)
Run Code Online (Sandbox Code Playgroud)

为什么KVO给出零值?这是图书馆的错误吗?

ios swift

7
推荐指数
0
解决办法
317
查看次数

迅速的新键值观察(KVO)仅要求.initial而不是.new

我正在尝试找出新的KeyValueObserving(KVO)API。我不知道我在做什么错的,因为我得到initial观察确定,但不new还是old。这就是我在做什么:

import Foundation

class Foo: NSObject {
    @objc var bar = 0
}

let foo = Foo()
let observer = foo.observe(\.bar, options: [.initial, .new, .old]) {(o, change) in
    print("old: \(change.oldValue) - new: \(change.newValue) ")
}
foo.bar = foo.bar + 1
observer.invalidate()
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

old: nil - new: Optional(0) 
Run Code Online (Sandbox Code Playgroud)

但是我应该得到:

old: nil - new: Optional(0) 
old: Optional(0) - new: Optional(1) 
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

swift

1
推荐指数
1
解决办法
575
查看次数

标签 统计

swift ×2

ios ×1