簡體   English   中英

不斷檢查變量

[英]Constant check for variable change

是否有辦法連續檢查變量是否在swift中發生了變化?

我已經嘗試了一個基本的計時器想法,它不是很聰明,因為它沒有精確地工作到允許的中斷的毫秒,並且可能是高度不可預測和小故障。 有沒有辦法設計這樣的檢查器? 理想情況下,它可以在等待方法中創建,例如:

DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
})

我的意思是,當這個等待計時器正在等待時,如果指定的變量發生了變化,它是否會有一種異常打破並執行不同的代碼?

如果您可以自己編輯屬性(即您自己編寫了屬性),則可以考慮使用didSet塊:

var someProperty: String {
    didSet {
        print("Got a new value: \(newValue)")
    }
}

如果屬性不是由您編寫但暴露給Objective-C,則可以執行一些鍵值觀察:

@objc class MyClass : NSObject {
    @objc dynamic var someProperty: String = "Hello"
}

let obj = MyClass()
obj.observe(\.someProperty) { (myClass, value) in
    print("Got a new value: \(myClass.someProperty)")
}
obj.someProperty = "Changed!"

你想要的是關鍵價值觀察。 基金會支持NSObject屬性的KVO,並且在Swift 4中支持原生Swift KVO。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM