Was ist die Bedeutung von WaitUntilDOne
in performSelectorOnMainThread
?
Wie kann YES
oder NO
auf WaitUntilDone
in der App gesetzt werden?
UPDATE:
Meine Frage hätte sein sollen: In welchen Szenarien machen sie einen Unterschied?
Sergios Antwort war diejenige, die ich erwartet hatte.
Von Apple-Dokumentation zu waitUntilDone
:
Ein boolescher Wert, der angibt, ob der aktuelle Thread blockiert, bis der angegebene Selektor am Empfänger im Haupt-Thread ausgeführt wird. Geben Sie YES an, um diesen Thread zu blockieren. Andernfalls geben Sie NO an, damit diese Methode sofort zurückgegeben wird. Wenn der aktuelle Thread auch der Hauptthread ist und Sie YES für diesen Parameter angeben, wird die Nachricht sofort übermittelt und verarbeitet.
Sie müssen sich darauf konzentrieren, welcher Thread performSelectorOnMainThread
ausführt. Dieser Thread blockiert und wartet, bis der Haupt-Thread diesen Selektor abgeschlossen hat. B., dass ein Worker-Thread eine Nachricht an den Haupt-Thread senden muss (z. B. um einige Informationen an einen zentralen Speicher zu speichern, der nicht Thread-sicher ist). Der Worker möchte möglicherweise blockieren und warten, bis der Vorgang abgeschlossen ist, bevor ein anderer Vorgang der gleichen Art ausgeführt wird. Daher ist waitUntilDone
in einem solchen Fall nützlich.
Wenn Sie NO
angeben, blockiert performSelectorOnMainThread
nicht und führt die nächste Codezeile unmittelbar nach dem performSelectorOnMainThread
aus, ohne darauf zu warten, dass der Hauptthread den Selektor ausführt.
Wenn Sie YES
sagen, blockiert der Thread, von dem aus Sie performSelectorOnMainThread
aufgerufen haben, die Ausführung in dieser Zeile, bis der Haupt-Thread den Selektor ausgeführt hat. Dann wird er fortgesetzt.
Im Allgemeinen möchten Sie verhindern, dass die Ausführung des aktuellen Threads mit YES
blockiert wird.
Wenn NO
, wird die Nachricht zur Liste der auszuführenden Aufgaben des Hauptthreads hinzugefügt, die ausgeführt werden soll, wenn die Ausführungsschleife wieder aufgenommen wird - das könnte bald und praktisch sofort / gleichzeitig geschehen.
Tags und Links objective-c ios nsobject