Я несколько раз сталкивался с этой проблемой при переносе кода Objective-C в Swift. Скажем, у меня есть следующий код:
dispatch_async(dispatch_get_main_queue()) {
self.hostViewController?.view.addSubview(self.commandField)
}
Это приведет к ошибке, подчеркивающей весь вызов dispatch_async
, предлагая:
Could not find member 'addSubview'
Я предполагаю, что это ошибка, которая еще не была должным образом реализована, потому что, если я поместил вызов addSubview
вне блока dispatch_async
, проект будет строптивым. Первоначально я предполагал, что это может иметь какое-то отношение к захвату self
в блоке. Однако вставка [unowned self] in
приводит к той же ошибке, что и [weak self] in
(после того, как были вставлены соответствующие операторы разворота !
).
Как я могу получить dispatch_async
блоки для работы в Swift, которые нужно захватить self
?