Wie löst man Fehler bei der Verwendung von thread?

8

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%     
ChandreshKanetiya 06.01.2011, 04:52
quelle

5 Antworten

0

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ügen

Sie 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

    
AJPatel 06.01.2011, 04:54
quelle
3
  • 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.

    
bbum 06.01.2011 06:20
quelle
2

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%     
Daniel COHEN 27.09.2011 12:43
quelle
0

Versuchen Sie, die CallParser-Methode zu

zu ändern %Vor%

Und verschieben

%Vor%

Zeile zu Update_View Methode

    
Andriy 06.01.2011 09:43
quelle
-1

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.

    
Warrior 06.01.2011 05:06
quelle

Tags und Links