iPhone Web Thread _WebThreadLockFromAnyThread

7

Vielleicht kann ein Iphone Guru mich erleuchten ...

Ich bin Zeile für Zeile gegangen und habe alle Threads-Aufrufe / NSInvocations, die das UIKit verwenden, entfernt. Tatsächlich habe ich 100% sicher gemacht, dass KEIN UIKit-Mist von irgendwoher angerufen wird außer dem Haupt-Bedroung I.E ...

%Vor%

So weit, so gut, aber dann, nachdem ich einen Thread erstellt habe, um einen HTTP POST zu machen (mit LibCurl) Ich fing an, das zu bekommen:

"void _WebThreadLockFromAnyThread (bool), 0x4d7bbe0: Ermitteln der Websperre von einem anderen Thread als dem Hauptthread oder dem Webthread. UIKit sollte nicht von einem sekundären Thread aufgerufen werden."

Wie WTF ...? Ich kann nicht einmal Curl von einem Thread verwenden, um eine netzwerkintensive Operation durchzuführen ..? Ich habe gerade dieses verdammte Ding von der MainThread bewegt, um mit ihrem (UIKit's) strengen UIKit zu streiten: "Nennt keinen UIKit-Mist, außer vom Main Thread ... PERIOD oder Else !!!"

Also verschiebe ich den "UiAlertView & amp; UIActivityIndicator" zurück auf den Hauptthread (keine Fehlermeldungen vorher) und erstelle einen Thread um die curl POST Operation durchzuführen ... Jetzt, wo ich in Übereinstimmung bin, und dann plötzlich, bekomme ich diese Nachricht ...?

Kann irgendjemand erklären, wo ich diese netzwerkintensive Operation durchführen soll, die übrigens dazu führt, dass die / UIAlertViews der UIActivity Indicators in ihren Spuren einfrieren ...

Vielen Dank im Voraus ...

[Ich bin nur ein Linux-Programmierer im Schafspelz]

    
NpC0mpl3t3 09.06.2011, 07:12
quelle

1 Antwort

29

Ok, Die Antwort (Hat überhaupt nichts mit Curl zu tun oder irgendeine fiktive Mitteilung an den Hauptthread)

Jeder, der diesen Fehler erhält, denkt nicht WEB Thread oder Haupt Thread, THINK, UITextView oder UIScrollView strong> oder eine andere Ansicht, die möglicherweise an Ihren neuen Thread übergeben wird.

Mein Problem war ein UITextView.text, der als Argument an den NEW-Thread übergeben wurde ... Daher "_ WebThreadLockFromAnyThread (bool)"

Eine einfache Lösung bestand also darin, es in einen lokalen NSString zu kopieren und diese Kopie im Argument an den neuen Thread zu übergeben (IE .. Warnung: UIKit sollte nicht von einem sekundären Thread aufgerufen werden )

%Vor%

Wenn Sie Hufabdrücke sehen, denken Sie an Pferde, NICHT an Zebras.

    
NpC0mpl3t3 09.06.2011 23:52
quelle

Tags und Links