Почему эта регистрация [Swift] NSObject.addObserver не вызывает func наблюдайте за ValveForKeyPath(), как ожидалось?
Проблемный код следует. [Я надеюсь, что] проблема полностью изложена в вопросе выше. Заранее спасибо. MJB.
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate
{
var some_string:NSString = "one"
func application ( application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]? ) -> Bool
{
println("init...")
self.addObserver( self, forKeyPath: "some_string", options: nil, context: nil )
self.some_string = "two"
return true
}
override func observeValueForKeyPath ( keyPath: String, ofObject object: AnyObject, change: [NSObject : AnyObject], context: UnsafeMutablePointer<Void> )
{
println("observeValueForKeyPath...")
}
}
1 ответ
Решение
Согласно документации Apple, вам необходимо использовать dynamic
Ключевое слово, чтобы включить KVO для этого свойства:
dynamic var some_string : NSString = "one"
Кроме того, класс должен наследовать от NSObject
чтобы сделать эту работу, хотя в вашем случае это дано с UIResponder
,