プログラムについてのアレコレや日々の気になった事を書いていきます。

プログラム@ファーム

iOS開発

【Objective-C】UI更新のためのMain Thread対応

投稿日:2017年4月21日

サーバから取得したデータを画面に反映させるときに表示が更新されない事があったり画面表示時に原因不明のクラッシュが発生したりする事があって突然表示が反映されなくなったり、クラッシュしたりして困ることが多かったので調査してみました。

調べた結果

・サーバからデータを取得する処理が呼び出し元によってはMain Thread以外で動作することがあり表示の更新がされなかった。

・画面表示の処理がMain Thread以外で呼び出された場合にクラッシュすることがわかった。

解決方法

UI更新は必ずMain Threadでする必要があるため、UI更新をMain Threadでするように記述を変更した

1.現在の処理がMain Threadかどうかを判定する。
2.現在の処理がMain Threadの場合はそのままUI更新処理を記述する。
3.現在の処理がMain Thread以外の場合はGCDを使ってMain Threadで動作するように記述する。

下記のように記載すると解決できました!

下記の書籍を参考までに載せておきますね!

“入門書”で挫折した人のための C言語からはじめるObjective-C超入門

Objective-C超入門― ゼロからしっかり学べるiPhoneプログラミング 改訂第3版

-iOS開発
-,

Copyright© プログラム@ファーム , 2017 AllRights Reserved.