Using dispatch_async with self

Ephemera

I have run into this problem a few times while porting Objective-C code to Swift. Say I have the following code:

dispatch_async(dispatch_get_main_queue()) {
    self.hostViewController?.view.addSubview(self.commandField)
}

This will result in an error, underlining the entire dispatch_async call, offering:

Could not find member 'addSubview'

I assume this is an error that has not yet been properly implemented because if I put the addSubview call outside the dispatch_async block, the project builds fine. Initially I assumed it may have something to do with capturing self in the block. However, inserting [unowned self] in results in the same error, as does [weak self] in (after the appropriate ! unwrap operators have been inserted).

How can I get dispatch_async blocks to work in Swift that need to capture self?

伊卢卡普拉

您应该对非null取消该操作的条件,而不是在启动它后再对其进行测试:

if let hostView = self.hostViewController?.view {
    DispatchQueue.main.async {
         hostView.addSubview(self.commandField)
    }
} else {
    // handle nil hostView 
}

您切勿在之外打开可选的包装if let或先对其进行测试。这样做还应该解决自己的自我弱点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

与self一起使用dispatch_async

来自分类Dev

如何使dispatch_async运行

来自分类Dev

dispatch_async尚未完成

来自分类Dev

在dispatch_async中调用委托方法

来自分类Dev

未调用dispatch_async块

来自分类Dev

使用dispatch_async并行搜索

来自分类Dev

Swift:从dispatch_async内部返回结果

来自分类Dev

无需回调的OCMock for dispatch_async

来自分类Dev

在dispatch_async中调用委托方法

来自分类Dev

来自函数的Swift dispatch_async

来自分类Dev

提取数据中的dispatch_async与dispatch_sync。迅速

来自分类Dev

NSManagedObjectContext内的dispatch_async(dispatch_get_main_queue()

来自分类Dev

提取数据中的dispatch_async与dispatch_sync。迅速

来自分类Dev

iOS:dispatch_async(dispatch_get_main_queue())

来自分类Dev

Swift dispatch_async导致EXC_BAD_ACCESS错误

来自分类Dev

一次或多次调用dispatch_async效率更高

来自分类Dev

多个dispatch_async()完成时进行回调

来自分类Dev

iOS-使用CoreData的dispatch_async保留周期

来自分类Dev

在dispatch_async函数中使用弱自身

来自分类Dev

通过dispatch_async读取图像数据后刷新UITableViewCell

来自分类Dev

未使用dispatch_async调用并重复NSTimer的方法

来自分类Dev

永远不会执行主队列上的dispatch_async块

来自分类Dev

dispatch_async永远不会完成执行整个块

来自分类Dev

目标C-调用dispatch_async show error

来自分类Dev

在Swift中使用Dispatch_Async更新UI

来自分类Dev

在Swift中使用dispatch_async并发分析数组

来自分类Dev

即使有dispatch_async,UICollectionViewCell UIImage也会滞后

来自分类Dev

如何在Swift中使用dispatch_async?

来自分类Dev

如何在dispatch_async期间停止NSOperationQueue

Related 相关文章

热门标签

归档