Ich muss eine Methode definieren, die periodisch mit einem gewissen Zeitintervall aufgerufen werden soll. Ich muss es in einem anderen Thread (NOT Hauptthread) aufrufen, da diese Methode verwendet wird, um Informationen von externer API zu erhalten und Daten in Kerndaten zu synchronisieren.
Wie definiere ich diese Methode, um den Haupt-Thread nicht zu blockieren?
Sofern Sie keine speziellen Timer benötigen, können Sie Grand Central Dispatch verwenden.
Das folgende Snippet führt einen Block nach 2 Sekunden in der Standardwarteschlange mit Priorität (d. h. einem Hintergrundthread) aus. Sie können die Priorität der Warteschlange ändern, wenn Sie es für richtig halten, aber wenn Sie nicht mit vielen verschiedenen Operationen in gleichzeitigen Warteschlangen zu tun haben, reicht die Standardeinstellung aus.
%Vor% Wenn Sie dies wiederholt aufrufen möchten, können Sie dispatch_source_set_timer
verwenden, um eine wiederkehrende Ausführung festzulegen. Die jist davon ist unten:
Tags und Links objective-c ios nstimer nsrunloop nsblockoperation