In Swift, noto che non esiste il costrutto @autoreleasepool{}
, sebbene Swift usi ARC. Qual è il modo corretto di gestire un autoreleasepool in Swift o è stato rimosso per qualche motivo?Qual è l'equivalente di @autoreleasepool in Swift?
risposta
Questo è spiegato in dettaglio in WWDC 2014 session video numero 418 "Migliorare la vostra applicazione con strumenti", che è anche possibile scaricare in formato PDF.
Ma insomma, la sintassi è:
autoreleasepool {
/* code */
}
È importante notare che '{' ** deve ** essere sulla stessa linea di "autoreleasepool", altrimenti devi racchiuderlo in '()'. Questo * davvero * mi infastidisce ad essere sincero ... – Erik
@SiLo davvero? Questo fa schifo. Dovresti presentare un bug report. –
@AbhiBeckert @SiLo Non è un bug. 'autorelease' è una funzione che accetta una chiusura come argomento. Questo è un esempio della sintassi short-hand closure-as-last-argument. –
C'è! Non è solo menzionato davvero da nessuna parte.
autoreleasepool {
Do things....
}
Cordiali saluti, Xcode costruito il codice completo come segue:
autoreleasepool({() ->() in
// code
})
Indovina le parentesi identifica la chiusura funzioni.
non sono sicuro del motivo per cui qualcuno ha de-votato questo commento, poiché sta facendo notare che un pool di autorelease fino a swift1.2 richiede che il codice venga inserito in una chiusura – bolnad
forse non è ancora stato rilasciato (e implementato uno personalizzato con il bridge ObjC è facile) –
Anche correlato e interessato: "È necessario utilizzare autoreleasepool in un programma Swift?" http://stackoverflow.com/questions/25860942/is-it-necessi-to-use-autoreleasepool-in-a-swift-program?rq=1 –