[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]是一个捕获列表并且在() -> 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
返回类型。