Non si passa [weak self]()
come argomento per una chiusura.
[weak self]
è una lista cattura e precede il
- lista dei parametri/tipo di ritorno dichiarazione
() -> Void
nell'espressione di chiusura.
Il tipo di ritorno o entrambi nell'elenco parametri e ritorno tipo può essere omesso se possono essere dedotte dal contesto, quindi tutti questi sono valide e tutto equivalente:
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 chiusura prende un parametro vuoto lista ()
e ha un tipo di ritorno Void
.
fonte
2015-12-16 07:00:22
@MartinR codice aggiornato. In realtà in alcune implementazioni vedo [il sé debole] che viene usato senza parentesi tonde e in alcuni vedo che viene usato come [auto debole](). Qual è esattamente la differenza tra questi due? –