我收到以下错误:
〜.swift:89:50:' TreeContainerView?'没有名为的成员 ' updateValues'
..即使' updateValues'确实如下所示。
class TreeContainerView:UIView {
override func awakeFromNib() {
weak var weakSelf:TreeContainerView? = self
let delayInSeconds:Double = 0.25
timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
...
dispatch_source_set_event_handler(timer, weakSelf.updateValues);
dispatch_resume(timer);
}
func updateValues() {
}
...
}
但是,如果我替换了' weakSelf.updateValues'使用&self;更新值'。
问题:
1)以下是正确的Swift版本(ObjC使用了一个块)吗?
dispatch_source_set_event_handler(timer, weakSelf.updateValues);
2)如何在Swift中实现弱引用(根据此上下文)?
答案 0 :(得分:0)
问题是weakSelf是一个可选的TreeContainerView。为了访问它的方法你已经解开弱自我来访问实际的TreeContainerView,如果它存在如下:
dispatch_source_set_event_handler(timer, weakSelf!.updateValues);