swift中dispatch_block_t的等价物是什么?

Nic*_*ico 7 objective-c grand-central-dispatch ios swift

我有一些Objective-c代码,我想在swift中做同样的事情:

dispatch_block_t adjustTooltipVisibility = ^{
    self.tooltipView.alpha = _tooltipVisible ? 1.0 : 0.0;
    self.tooltipTipView.alpha = _tooltipVisible ? 1.0 : 0.0;
};
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所能发现的dispatch_block_t是它在swift中用作dispatch_after作为闭包.所以我可以理解,但我不明白在objective-c中使用它就像这样,以及如何将此代码转换为快速代码

Nat*_*ook 6

dispatch_block_t是Void -> Void闭包的类型别名.Swift(从版本1.2开始)并不能很好地推断出这些,所以你需要声明类型.您还需要self显式引用以访问实例属性,并且需要确保您没有创建引用循环.声明self是weak在封闭是一个安全的方法:

let adjustTooltipVisibility: dispatch_block_t = { [weak self] in
    if self?._tooltipVisible == true {
        self?.tooltipView.alpha = 1
        self?.tooltipTipView.alpha = 1
    } else {
        self?.tooltipView.alpha = 0
        self?.tooltipTipView.alpha = 0
    }
}
Run Code Online (Sandbox Code Playgroud)