我正在編寫一個程序,向我的AudioSession和AudioQueues生成的類似控制檯的UITextView顯示不同的事件。例如,當我檢測到我的音頻路由發生了變化時,我只想在我的iPhone的屏幕上顯示一條快速消息,告訴您發生了這種情況。不幸的是,我相信我正在陷入一些競爭條件的混亂,我不確定解決這個問題的最佳解決方案是什麼。圖形用戶界面更新同步問題
當我運行我的程序,我調試控制檯吐出了這一點:
布爾_WebTryThreadLock(布爾),0x1349a0:嘗試以獲得比主線程或web線程以外的線程網絡鎖定。這可能是從輔助線程調用UIKit的結果。現在崩潰...
這發生在一行代碼:
textView.text = string;
我嘗試這樣做:
[textView performSelectorOnMainThread:@selector(setText:) withObject:string waitForDone:YES];
而這似乎已經固定,但我敢肯定我不應該做這樣的事情來實現它。不幸的是,這不適用於[UITextView scrollVisibleWithRange:],因爲這需要一個NSRange,它不是NSObject的後代。我認爲我所做的是根本錯誤的。
這段代碼是從一箇中斷監聽器中調用的,它從音頻隊列的線程中運行。有什麼我應該做的,這將使我的更新到我的textview阻止,所以我沒有得到這個問題?
謝謝。