Swift中的__block

Aru*_*mar 24 ios swift

__block变量上的关键字Objective C用于确保将特别处理此变量block,但与此关键字的对应关系是swift什么?

我做了一些谷歌研究,但到目前为止一切都让我困惑.

以下是我的代码:

var myArr = NSMutableArray()
completionBlock(myArray,nil)
Run Code Online (Sandbox Code Playgroud)

我试过了

__block var myArr = NSMutableArray()
Run Code Online (Sandbox Code Playgroud)

mat*_*att 33

__blockSwift 没有必要.捕获的变量可以在闭包内自动设置.

  • 哦通过添加一行"var bgTask:UIBackgroundTaskIdentifier = 0;"来解决这个问题.单独初始化`bgTask`将解决此问题.但我现在感到困惑的是`捕获的变量可以从闭包中自动设置.行.:| (4认同)
  • 实际上'bgtask'变量在完成块中是不可访问的,如果我在一行中写它,如上所述.我有Objective-C的cofe,它使用'__block'作为前缀.所以我在Swift中寻找相同的东西('__lock').但正如我已经解决了我在第二条评论中提到的这个问题.如果它不相关我会删除我的评论? (4认同)
  • `var bgTask = app.beginBackgroundTask {app.endBackgroundTask(bgTask)bgTask = UIBackgroundTaskInvalid}`我收到此行的错误.**错误:**`在其自己的初始值中使用的变量`. (3认同)