Iphone Web Thread _WebThreadLockFromAnyThread

也许一位Iphone Guru可以启发我……

我一直在逐行排除任何使用UIKit的线程调用/ NSInvocation,事实上,我已经100%确定NO UIKit垃圾从除MainThread之外的任何其他地方调用
即…

if([NSThread isMainThread])
{
  blah....
  Call UIKit Crap here!
  and blah....
}

到目前为止这么好,但后来我创建了一个线程来做一个http POST(使用LibCurl)
我开始得到这个:

“void _WebThreadLockFromAnyThread(bool),0x4d7bbe0:从主线程或网络线程以外的线程获取Web锁定.不应该从辅助线程调用UIKit.”

喜欢WTF ……?我甚至不能使用Thread中的Curl来进行网络密集型操作..?
我只是把这个该死的东西从主线上移开,以符合他们(Apple的)UIKit的严格要求,“不要叫任何UIKit废话,除了主线……周期或其他!!!”

所以我将“UiAlertView& UIActivityIndi​​cator”移回主线程(之前没有错误消息)并创建一个线程来执行curl POST操作…
既然我遵守了规则,然后突然间,我开始收到这条消息……?

任何人都可以解释我想放置这个网络密集型操作的位置,顺便说一句,这将导致任何UIActivity Indicator / UIAlertView的内容冻结……

提前致谢…

[我只是一个穿着羊皮的linux程序员]

好的,答案(没有任何与Curl或主线程的虚构通知有关)

任何收到此错误的人,不要认为WEB线程或主线程,THINK,UITextView或UIScrollView或任何其他可能会传递给您的新线程的视图.

我的问题是一个UITextView.text,它作为参数传递给NEW线程……
因此“_WebThreadLockFromAnyThread(bool)”

所以一个简单的解决方法是将它复制到本地NSString并将参数中的副本传递给新线程(I.E … Warning: UIKit should not be called from a secondary thread)

[NSThread detachNewThreadSelector: @selector(sendStuff:) toTarget: self withObject: self.textField.text];

当你看到蹄印,思考马,而不是斑马.

翻译自:https://stackoverflow.com/questions/6289309/iphone-web-thread-webthreadlockfromanythread

转载注明原文:Iphone Web Thread _WebThreadLockFromAnyThread