簡體   English   中英

弱自我與弱自我的區別()

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM