void _WebThreadLockFromAnyThread(bool)
,0x4c60190
:從主線程或Web線程以外的線程獲取Web鎖。UIKit
不應該從輔助線程調用。目標C,這是什麼警告?
如果我嘗試從UITextView
獲取文本,我會收到此警告消息。
void _WebThreadLockFromAnyThread(bool)
,0x4c60190
:從主線程或Web線程以外的線程獲取Web鎖。UIKit
不應該從輔助線程調用。目標C,這是什麼警告?
如果我嘗試從UITextView
獲取文本,我會收到此警告消息。
您是否產生了另一個線程並從中調用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];
}
非常感謝。我解決了這個問題。問題是我試圖從不是來自主線程的另一個線程訪問UITextview。 – codereviewanskquestions 2011-03-06 01:18:46
發佈相關的代碼將是一個很大的幫助。 – DVG 2011-03-05 09:00:51