Ich habe die folgende Methode:
%Vor%Und ich wollte wissen, ob es eine Möglichkeit gibt, diese Methode mit performSelectorOnMainThread aufzurufen, damit ich den Rückgabewert erhalten kann. Bisher habe ich es mit:
probiert %Vor%aber es funktioniert nicht, da performSelectorOnMainThread void zurückgibt. Wie könnte ich das lösen?
Willkommen in einer Multithread-Umgebung, mein Freund.
Sie müssen den Rückgabewert in einer Instanzvariablen speichern oder ein Objekt als Referenz über den Parameter withObject
übergeben:
Ihr Methodenprototyp sollte jetzt so aussehen:
%Vor%Sie können es nicht direkt machen, weil, wie Sie sagen, diese Methode void zurückgibt.
Sie müssen also einen anderen Weg finden, um einen Wert zurückzuerhalten, indem Sie beispielsweise ein NSDictionary anstelle eines NSString übergeben und die Methode das Ergebnis für Sie im Wörterbuch speichern.
Ich habe universelle Lösung für asynchronen blockierenden Aufruf mit Rückgabewert für jeden Thread, nicht nur Haupt. Dieses Beispiel für einen Haupt-Thread wie performSelectorOnMainThread: withObject: waitUntilDone:
%Vor%Ich habe diese Technik nur in der ARC-Umgebung verwendet.
Tags und Links iphone multithreading cocoa-touch