Warum Sie PerformSelectorOnMainThread
verwenden? Sie hätten stattdessen dispatch_get_main_queue
verwenden können.
PerformSelectorOnMainThread
ruft eine Methode des Empfängers auf dem Hauptthread auf, die den Standardmodus verwendet.
dispatch_get_main_queue
gibt die Standardwarteschlange zurück, die an den Hauptthread gebunden ist.
In Ihrem Fall sollten Sie Ihren Funktionsaufruf in dispatch_get_main_queue
so setzen, dass Sie Ihre Rückgabewerte erhalten.
dispatch_async(dispatch_get_main_queue(), {
let ouptut = self.dateFromSection(YourDate)
// output contains your return value, which is a closure
})
Wenn Sie Rückruf wollen in einem anderen Teil des Codes reflektiert werden, können Sie eine lokale Instanz dieses Verschlusses schaffen und kann Rückgabewert es so zuweisen. Andernfalls können Sie eine globale Instanz erstellen und zuweisen, welche in anderen Klassen verwendet werden kann.
class YourClass
{
//MARK: Local Variables
var yourDateClosure : (startDate: NSDate, endDate: NSDate)?
func yourFunctionName()
{
dispatch_async(dispatch_get_main_queue(), {
self. yourDateClosure = self.dateFromSection(YourDate)
})
}
}
Dank für die Beantwortung, ich die Frage –