[英]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]
是一个捕获列表 ,位于之前 () -> 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()
}
闭包采用空参数list ()
并具有Void
返回类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.