Swift:无法访问弱引用func()

时间:2014-09-10 23:31:36

标签: swift grand-central-dispatch


我收到以下错误:

  

〜.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中实现弱引用(根据此上下文)?

1 个答案:

答案 0 :(得分:0)

问题是weakSelf是一个可选的TreeContainerView。为了访问它的方法你已经解开弱自我来访问实际的TreeContainerView,如果它存在如下:

dispatch_source_set_event_handler(timer, weakSelf!.updateValues);