0

Swift 中 KVO 的当前最佳实践在这篇 SO 帖子中有很好的记录,看起来像这样:

someObject.addObserver( self, forKeyPath: "someProperty", options: .New, 
    context: &self.someContext )

我想通过将其封装在ObserversManager(例如)类中来简化内存管理问题,因此我可以执行以下操作:

func observe ( observed: NSObject, observer: NSObject, keyPath: String, 
    context: Int )
{
    observed.addObserver( observer, forKeyPath: keyPath, options: .New, 
        context: context ) { ... }
}

func removeObserversByObserver ( observer: NSObject ) { ... }
func removeAllObservers () { ... }

问题是上面的func 观察者抛出了以下编译时错误,我目前无法修复,因为官方文档没有详细说明答案。 Could not find member 'New'

4

1 回答 1

1

错误消息具有误导性。问题是context:参数是一个指针,而不是一个 Int:

func observe ( observed: NSObject, observer: NSObject, keyPath: String,
    context: UnsafeMutablePointer<Void> )
{
    observed.addObserver(observer, forKeyPath: keyPath, options: .New,
                         context: context)
}
于 2015-04-19T09:17:42.197 回答