Ist dieser Core Graphics-Codethread sicher?

Ich weiß, es ist sicher, auf jeden Faden zuzugreifen, solange ich anrufe

UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
UIGraphicsEndImageContext();

auf dem gleichen Thread.

Das Erstellen eines Screenshots einer Ansicht mit dieser Methode dauert ungefähr 300 ms, was nicht schlecht ist, aber ich bin in einer angespannten Situation, also möchte ich es in einem Hintergrundthread ausführen.

Folgendes mache ich:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
        UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
        [view.layer renderInContext:UIGraphicsGetCurrentContext()];
        UIImage * screenshot = UIGraphicsGetImageFromCurrentImageContext();
        UIGraphicsEndImageContext();
    });

Das einzige, was hier in Frage kommt, ist dasview, der auf dem Hauptfaden liegt. Ist es sicher anzurufen?renderInContext auf einenview.layer von einem Hintergrund-Thread? Oder ist es im Allgemeinen sicher, ein UIKit-Objekt aus einem anderen Thread nur lesbar zu machen?

(Und bitte geben Sie mir nicht die Standardantwort "UIKit ist nicht threadsicher". Das weiß ich bereits. Dies ist ein Sonderfall (und sagen Sie mir nicht, dass es keine Sonderfälle gibt).)

(Der obige Code funktioniert einwandfrei, aber ich bin nicht sicher, ob das nur ein Zufall ist.)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage