2011-03-05 94 views
1

void _WebThreadLockFromAnyThread(bool),0x4c60190:从主线程或Web线程以外的线程获取Web锁。 UIKit不应该从辅助线程调用。目标C,这是什么警告?

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

+2

发布相关的代码将是一个很大的帮助。 – DVG 2011-03-05 09:00:51

回答

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]; 
} 
+0

非常感谢。我解决了这个问题。问题是我试图从不是来自主线程的另一个线程访问UITextview。 – codereviewanskquestions 2011-03-06 01:18:46