Entschuldige die neue Frage (vielleicht). Ich entwickle eine App für iOS und versuche, ein externes XML aus dem Hauptthread auszuführen, um das UI nicht einzufrieren, während der Anruf seine Magie entfaltet.
Dies ist die einzige Möglichkeit, die ich kenne, um einen Prozess zu machen, der nicht im Haupt-Thread von Ziel c ausgeführt wird.
%Vor%also habe ich meinen Anruf in eine Funktion eingekapselt
%Vor%Jetzt muss ich die Zeichenfolge indXML zu einem Parameter der Funktion machen, um verschiedene XML-Dateien aufzurufen, die ich brauche. Etwas wie
%Vor%In diesem Fall ändert sich der Aufruf von performSelector? Wenn ich es auf die übliche Weise mache, bekomme ich Syntaxfehler:
%Vor%dh: was Sie als withObject übergeben: wird der Parameter für Ihre Methode.
Genau wie ein Punkt von Interesse hier ist, wie Sie es mit GCD tun können:
%Vor%Der von Ihnen verwendete Selektor muss genau mit dem Methodennamen übereinstimmen - der Methodenname enthält die Doppelpunktzeichen (:). Also sollte dein Selektor sein:
%Vor%Wenn Sie einen Parameter übergeben möchten.
Wenn Sie komplexere Daten übergeben müssen, haben Sie drei Möglichkeiten:
NSArray
oder NSDictionary
mit den Parametern Da performSelectorInBackground:withObject:
nur ein Objektargument akzeptiert. Eine Möglichkeit, diese Einschränkung zu umgehen, besteht darin, ein Wörterbuch (oder Array) von Argumenten an eine "Wrapper" -Methode zu übergeben, die die Argumente dekonstruiert und Ihre tatsächliche Methode aufruft.
Tags und Links objective-c ios performselector