【问题标题】:Is it a way to observe global variable in Swift?它是一种在 Swift 中观察全局变量的方法吗?
【发布时间】:2014-08-12 09:31:41
【问题描述】:

我想添加一个观察者来检查全局变量的变化,但这似乎不可能。

var selectedItem: NSManagedObject?

class LCCC: UICollectionViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // need to set up an "observer" that trigger selectedItemDidChange method, if selectedItem changed
    }

    func selectedItemDidChange {
    }
}

【问题讨论】:

  • 您尝试过使用 willSet 吗?
  • willSet 是一个属性观察者,我正在寻找一种观察全局变量的方法,在 Objective-C 中不可能使用全局变量,只能使用静态描述符,它的作用域是 .m文件,但在 Swift 中可以再次使用全局变量
  • 正确,您是否尝试过观察与在 obj-c 中相同的方式?

标签: swift observer-pattern key-value-observing


【解决方案1】:

我认为在 swift 中最惯用的方法是使用属性观察器:

var test:NSString = "hi" {
    willSet {

    }
    didSet {

    }
}

(虽然你需要提供一个初始化器)

【讨论】:

  • 我添加了另一个全局变量,用于存储观察者引用,并从willSet 调用selectedItemDidChange 方法。
【解决方案2】:

你有没有尝试过:

NSNotificationCenter.defaultCenter().addObserver(selectedItem, selector: Selector("selectedItemDidChange"), name: "selectedItemObserver", object: self)

【讨论】:

  • 我试过这样,但不起作用:NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("selectedItemDidChange"), name: "selectedItem", object: nil)
猜你喜欢
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 2019-02-16
  • 1970-01-01
  • 2014-10-10
  • 1970-01-01
  • 2021-01-26
  • 1970-01-01
相关资源
最近更新 更多