弱自我与弱自我的区别()
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类型。
将 [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类型。