アプリで _WebThreadLockFromAnyThread エラーが発生します。アプリがクラッシュすることはありません (このような他のすべてのエラーでアプリがクラッシュしました)。
問題のあるコード行がどこにあるかを追跡するのに苦労しています。
このエラーは、セカンダリ スレッドで UI を更新しようとしたときに発生することがわかっています。私はKVO'ingのためにメイン以外のスレッドを1つだけ使用しています。私はすべてのメソッド呼び出しを
[self foo]
エラーは次のとおりです。
void _WebThreadLockFromAnyThread(bool), 0xb29ca60: Obtaining the web lock from a thread other than the main thread or the web thread. UIKit should not be called from a secondary thread.
エラーは、ログの実行ごとに同じ場所に表示され、次の 2 つのログ エントリの間に出力されます。
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"observeValueForKeyPath thread%@", [NSThread currentThread]);
if ([keyPath isEqualToString:MAXY])
{
NSLog(@"current tabDictionary:%@", self.tabDictionary);
しかし、if stmt を使用して UI を変更することとは何の関係もないはずなので、プログラムの別の場所で起こっていると想定しています。
そのメモリアドレスを使用して、それがどのオブジェクトであるかを特定できますか? またはどのスレッドから試していますか?