- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一些我想理解的 objective-c 代码,以便在 swift 中执行相同的操作:
dispatch_block_t adjustTooltipVisibility = ^{
self.tooltipView.alpha = _tooltipVisible ? 1.0 : 0.0;
self.tooltipTipView.alpha = _tooltipVisible ? 1.0 : 0.0;
};
到目前为止,关于 dispatch_block_t
我能找到的所有信息是它在 swift 的 dispatch_after 中用作闭包。所以我能理解,但我不明白它在 objective-c 中的用法,以及如何将这段代码转换为 swift 代码
最佳答案
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
}
}
关于ios - swift 中的 dispatch_block_t 相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738262/
为什么像这样使用 dispatch_block_t 不安全? 我在看dispatch_block_t的官方评论,发现下面的代码,不明白哪里错了?为什么不安全?有人可以告诉我吗?我很感激。希望能详细给我
我有一些我想理解的 objective-c 代码,以便在 swift 中执行相同的操作: dispatch_block_t adjustTooltipVisibility = ^{ self.
我在 Swift 1.2 中有一个代码来创建一个 dispatch_block_t 数组,它工作正常。但是相同的代码在 Swift 2.0 中会抛出错误。 var menuView: btSimple
我创建了一个像这样的dispatch_block_t数组, let actions: [dispatch_block_t] = [ {self.pickImages()}, {self
我是一名优秀的程序员,十分优秀!