[英]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.