Verwenden von Swift 3 in Xcode 8.2.1 für eine iOS App.Benötige ich einen Autorespulepoolblock innerhalb einer DispatchQueue.main.async
Ich verstehe, dass ich einen Autoreleasepool-Block brauche, wenn ich eine Verarbeitung für einen neuen Thread absetze. Aber wird es benötigt, wenn man auf den Haupt-Thread zurückschickt?
Angenommen, wir auf dem Hauptthread sind und wie folgt vorgehen:
DispatchQueue.global(qos: .background).async {
autoreleasepool {
//***** do something in the background
} // autoreleasepool
DispatchQueue.main.async {
//***** do something on the main thread when background job is done
//***** does this something need to be enclosed in an autoreleasepool block ?
} // DispatchQueue.main.async
} // DispatchQueue.global
das klingt für mich vernünftig, aber es gab so viele Beispiele rund um das Netz, die Autorespulepool-Blöcke enthalten ... Also, wenn ich es gut verstehe, ist der erste Autorespulepool in meinem Beispiel auch nicht notwendig. Ist das korrekt ? – KerCodex
Dies ist nicht einmal mehr für 'NSThread' oder sogar Pthreads erforderlich. http://StackOverflow.com/a/30519746/97337 Und natürlich ist es auch nicht für Warteschlangen erforderlich, die Sie erstellen (also nicht nur vom System erstellte Warteschlangen). Sie müssen jetzt nur dann Autorespulepools erstellen, wenn Sie eine Menge temporärer Objekte erstellen möchten, deren Lebensdauer Sie steuern möchten (normalerweise, um Speicherspitzen aufgrund von Schleifen zu vermeiden). –
Ja, richtig. Es wird nicht benötigt – Alistra