swift4 KVO无法正常工作

时间:2017-08-04 10:18:37

标签: ios swift key-value-observing swift4

我在swift4中使用新的kvo,只有当类的值在外面改变时它才有效。

@objcMembers class BaseGameLogic: NSObject {
    var timer: Timer!
    dynamic var time = 10

    override init() {
        super.init()

        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(decreaseTime), userInfo: nil, repeats: true)
    }

    func decreaseTime() {
        self.time -= 1
         print("in game logic time: \(time)")
         if time == 0 {
             timer.invalidate()
         }
    }
}

在其他课程中,它看起来像是:

class GameViewController: UIViewController {
    var gameLogic = BaseGameLogic()

    override func viewDidLoad() {
        super.viewDidLoad()

        let kvo = gameLogic.observe(\.time, options: [.new]) { object, value in
            print(value)
        }
    }
}

我在控制台上没有输出!
但是当我在kvo之后添加以下代码行时:

gameLogic.time = 20

我得到输出到控制台,通知新值(20)来了。

0 个答案:

没有答案