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

时间:2015-12-16 06:40:00

标签: ios xcode swift closures weak

[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
}

1 个答案:

答案 0 :(得分:9)

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

  • [weak self]捕获列表,位于
  • 之前
  • 参数列表/返回类型声明() -> Void

在闭包表达式中。

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

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 返回类型。