[NSThread detachNewThreadSelector:@selector(getCurrentWeatherData) toTarget:self withObject:nil];
というように別スレッドで処理するようにしていた。
iOS7、8の頃は良かったが、9になったら以下のメッセージとともにずらずらとオブジェクトの中身みたいなメッセージが表示されるようになった。
気象情報をラベルなんかに入れる時に、オートレイアウトの設定で文字数に応じてサイズを変更してくれたりするようなので、その関連だろう。
以下のようにdispatch_async()で処理してやったらエラー出なくなった。
Objective-Cのコード
そもそも、別スレッドの並列処理にしなくても大丈夫そうなので、普通にgetCurrentWeatherDataメソッド呼ぶようにしちゃったけどねw
This application is modifying the autolayout engine from a background thread, which can lead to engine corruption and weird crashes. This will cause an exception in a future release.バックグラウンドのスレッドでオートレイアウトをいじってると、将来痛い目にあうぞという意味だと思う。
気象情報をラベルなんかに入れる時に、オートレイアウトの設定で文字数に応じてサイズを変更してくれたりするようなので、その関連だろう。
以下のようにdispatch_async()で処理してやったらエラー出なくなった。
Objective-Cのコード
dispatch_async(dispatch_get_main_queue(), ^{
ここにコードを書く
});
0 件のコメント:
コメントを投稿