
这是一个例子:
class Source: NSObject { var observable: String = "<Original>" overrIDe init() { super.init() dispatch_after(dispatch_time(disPATCH_TIME_Now,Int64(1 * NSEC_PER_SEC)),dispatch_get_main_queue(),{ () -> VoID in self.observable = "<Updated>" println("Updated value to \(self.observable)"); }) }}class Observer: NSObject { init(source: Source) { super.init() source.rac_valuesForKeyPath("observable",observer: self).subscribeNext { (value: AnyObject!) -> VoID in println(">>> Observable value changed: \(value)") } }} 该示例生成以下输出:
>>> Observable value changed: <Original>Updated value to <Updated>
这意味着未调用subcribeNext块.
预期的输入是:
>>> Observable value changed: <Original>Updated value to <Updated>>>> Observable value changed: <Updated>
任何线索如何解决问题?
解决方法 可观察性需要是动态的我让您的示例使用以下代码
class Source: NSObject { dynamic var string:String = "Initial Value" overrIDe init() { super.init() }}class Observer: NSObject { init(source:Source) { super.init() source.rac_valuesForKeyPath("string",observer: self).subscribeNext { (newVal:AnyObject!) -> VoID in println(newVal) } }}class VIEwController: UIVIEwController { var source:Source! var obs:Observer! overrIDe func vIEwDIDLoad() { super.vIEwDIDLoad() source = Source() obs = Observer(source: source) source.string = "Another Value" }} 总结 以上是内存溢出为你收集整理的ios – ReactiveCocoa rac_valuesForKeyPath在Swift中不起作用全部内容,希望文章能够帮你解决ios – ReactiveCocoa rac_valuesForKeyPath在Swift中不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)