NSAttributedString aus HTML im Hauptthread verhält sich wie beim Multithreading
Posted: 15 Jan 2025, 17:55
Ich konvertiere HTML in einen NSAttributedString im Hauptthread (wie Apple es Ihnen sagt). Es dauert einige Zeit und dann wird der Rest des Blocks weiter ausgeführt.
Nun, wenn ein anderer Block zur Ausführung im Hauptthread in die Warteschlange gestellt wird auch (z. B. nachdem ich eine Antwort von einer HTTP-Anfrage erhalten habe), würde ich erwarten, dass es nach ausgeführt wird, nachdem alles andere abgeschlossen ist, aber das passiert nicht: Sie laufen parallel, als wären sie in verschiedenen Threads. Ich habe überall Asserts eingefügt, um sicherzustellen, dass sie sich im Hauptthread befinden.
Ich habe ein Experiment „Single View App“-Projekt durchgeführt, um dies zu testen, mit einer Datei, die einen sehr langen HTML-Code enthält Zeichenfolge wie lorem ipsum dolor sit amet und einen View-Controller mit dem folgenden Code:
Nun, wenn ein anderer Block zur Ausführung im Hauptthread in die Warteschlange gestellt wird auch (z. B. nachdem ich eine Antwort von einer HTTP-Anfrage erhalten habe), würde ich erwarten, dass es nach ausgeführt wird, nachdem alles andere abgeschlossen ist, aber das passiert nicht: Sie laufen parallel, als wären sie in verschiedenen Threads. Ich habe überall Asserts eingefügt, um sicherzustellen, dass sie sich im Hauptthread befinden.
Ich habe ein Experiment „Single View App“-Projekt durchgeführt, um dies zu testen, mit einer Datei, die einen sehr langen HTML-Code enthält Zeichenfolge wie lorem ipsum dolor sit amet und einen View-Controller mit dem folgenden Code:
Code: Select all
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
dispatchStuff()
for _ in 0..