目标C,这是什么警告?

时间:2011-03-05 09:00:19

标签: objective-c cocoa-touch uikit

  

void _WebThreadLockFromAnyThread(bool)0x4c60190:从主线程或Web线程以外的线程获取Web锁定。不应该从辅助线程调用UIKit

如果我尝试从UITextView获取文字,我会收到此警告消息。

1 个答案:

答案 0 :(得分:2)

你是否产生了另一个线程并从中调用了UIKit方法?像+ (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument- (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg 这样的方法会产生一个新线程。

UI相关代码只能在主线程中使用。由于许多UI代码严重使用多线程,因此允许从任何线程调用UI代码很容易导致无法管理的死锁。所以大多数UI框架都有这个规则。

您可以使用- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait

等方法强制代码在主线程中运行

举个例子,

- (void)UIControlCode
{
}
- (void)processingCodeInOtherThread
{
    [self performSelectorOnMainThread:@selector(UIControlCode) withObject:nil waitUntilDone:NO];
}