Ich habe folgenden Fehler msg in der Konsole bei der Verwendung von NSThread "Versucht, die Websperre von einem anderen Thread als dem Hauptthread oder dem Webthread zu erhalten. Dies kann ein Ergebnis des Aufrufs von UIKit von einem sekundären Thread sein. Crashing now ..."
Ich habe meinen Beispielcode hier eingereicht
%Vor%hier "DownloadAndParseUnderground" ist die Methode zum Herunterladen von Daten aus dem RSS-Feed und
%Vor%Wenn die Methode "Update_View" die Methode "tableView reload Data" aufgerufen wird und im Feld "cellForRowAtIndexPath" ein Fehler auftritt und keine benutzerdefinierte Zelle angezeigt wird
%Vor%ok bitte erklären Sie richtig Warum benötigen Sie Thread in Parsing-Methode? In Ihrem Code verwenden Sie die Tabelle neu laden Methode in richtig in Thread ....
weil
Sie können nichts, was zu Ihrer VIEW gehört, in thread ...
einfügenSie können nur einen Hintergrundprozess wie das Parsing einfügen ... wenn Sie die Tabelle nach dem Parsen neu laden wollen, können Sie einen Flag-Wert in Ihrem Code verwenden und nach dem Parsen der Tabelle
Wenn es einen Absturz gibt, gibt es ein Backtrace. Bitte posten Sie es.
Methodennamen beginnen mit Kleinbuchstaben, sind camelCased und enthalten keine Unterstriche. Wenn Sie diese Konventionen befolgen, wird Ihr Code von anderen iOS-Programmierern leichter gelesen und das Erlernen dieser Konventionen erleichtert das Verständnis des Codes anderer iOS-Programmierer.
Sie können Methoden im Hauptthread nicht direkt oder indirekt aus Hintergrundthreads aufrufen. Ihr Absturz und Ihr Code sowohl anzuzeigen, dass Sie frei mit dem Haupt-Gewindeform nicht-Haupt-Threads interagieren.
Die Dokumentation über die Verwendung von Threads in iOS-Anwendungen ist ziemlich umfangreich.
Ihr Problem sollte auftreten, weil Sie Ihren UIViewController von einem Thread laden, der nicht der Hauptthread ist. Wenn Sie versuchen, Daten aufzuladen, bevor Sie die Ansicht laden. Um dies zu arrangieren, können Sie versuchen, dies zu tun 1. Fügen Sie eine Methode hinzu, um Ihren Viewcontroller mit nur einem Parameter zu laden
%Vor%2. Ändern Sie Ihren Code (kommentiert unten) in Ihrem asynchronen Laden zu "PerformSelectorOnMainThread"
%Vor%Sie können auf keine Benutzeroberflächenelemente aus einem Hintergrundthread zugreifen. Sie können sicherlich keine Ansichten zu einem Hintergrund-Thread erstellen. Verwenden Sie die Methode "performSelectorOnMainThread" anstelle der Methode "detachNewThreadSelector".
Alles Gute.