Timer in einem anderen Thread in Objective - C

8

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?

    
user2375706 04.02.2014, 21:27
quelle

2 Antworten

13

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:

%Vor%     
WDUK 04.02.2014, 21:34
quelle
1

Verwenden Sie NSRunLoop und NSTimer für die Arbeit

%Vor%     
henry4343 05.02.2014 01:40
quelle