弱自我与弱自我的区别()

Difference between weak self vs weak self()

[weak self] 作为参数传递给闭包与传递 [weak self] ()

之间有什么区别

例如:

dispatch_async(dispatch_get_main_queue()) { [weak self] in 
     //Some code here
}

v/s

dispatch_async(dispatch_get_main_queue()) { [weak self] () -> Void in
     //Some code here
}

您没有将 [weak self] () 作为参数传递给闭包。

  • [weak self] 是一个 捕获列表 并且在
  • 之前
  • 参数list/return类型声明() -> Void

在闭包表达式中。

return类型或者参数列表和return类型都可以省略 从上下文推断,所以这些都是有效的 完全等效:

dispatch_async(dispatch_get_main_queue()) { [weak self] () -> Void in 
    self?.doSomething()
}

dispatch_async(dispatch_get_main_queue()) { [weak self] () in 
    self?.doSomething()
}

dispatch_async(dispatch_get_main_queue()) { [weak self] in 
    self?.doSomething()
}

闭包采用空参数列表 () 并且有一个 Void return类型。