将[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
}
答案 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
返回类型。