Vous ne transmettez pas [weak self]()
comme argument à une fermeture.
[weak self]
est une liste de capture et précède le
- liste des paramètres/type de retour déclaration
() -> Void
dans l'expression de fermeture.
Le type de retour ou à la fois la liste des paramètres et le type de retour peut être omis si elles peuvent être déduites du contexte, de sorte que tous ceux-ci sont valables et entièrement équivalentes:
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()
}
La fermeture prend un paramètre vide liste ()
et a un type de retour Void
.
@MartinR code mis à jour. En fait, dans certaines implémentations, je vois [self faible] être utilisé sans parenthèses et dans certains je le vois comme [self self](). Quelle est exactement la différence entre ces deux? –