Objective-Cで、位置情報を取得して、サーバに座標を送信するアプリを作ったのですが、
サーバ接続失敗時(と思われる)にアプリがしばらくフリーズして落ちてしまいます。
何か対策等ありますでしょうか?あるいは、原因の確認方法(本当にサーバ接続失敗時?あるいはGPS取得失敗時?)
・位置情報取得は、NSTimerクラスで、5秒間隔など、ピッカーを使って変数を渡して自動実行させています。
・落ちないときは、15分くらい落ちない(サーバ接続成功したため?)ときがあることは確認済みです。
スレッド処理をすれば回避できるのではないかと考えています。(あるいはエラー処理か・・・)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
フリーズというのが少し気になりますが、失礼ながらメインスレッドで非同期ではなく同期で通信処理を書いていないでしょうか。
一瞬で終わる処理であれば、同期処理でも良いのですが通信のように一定の時間で完了するものではない可能性がある処理を行うのであれば非同期で実行するなど対策が必要だと思います。
NSTimerを使用して5秒間隔で行っている処理が、以下のようになればクラッシュするような気がします。
・1回目 通信処理を呼び出す
・2回目 1回目の通信が完了していない状態で、もう一度通信処理を呼び出す
仮説が正しければ、5秒間隔ではなく例えば180秒間隔などにすれば発生しないのではないでしょうか。
(逆に0.1秒間隔などにすれば通信完了まで間に合わずに即座に再現するかもしれませんが。)
状況をイマイチ把握出来ていないため、的外れな回答かもしれませんが参考なれば幸いです。
投稿2015/06/12 09:53
総合スコア1336
0
非同期通信なのか同期通信なのかで設計が変わりそうですが・・・。
サーバーレスポンスは正しく処理する方がよいですね。
一応try,catchも入れると安全かもです。
落ちた時のエラーログを見ると原因がわかると思います。
投稿2015/06/12 09:37
総合スコア1021
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/12 10:18
2015/06/12 14:49
2015/06/15 08:46
2015/06/16 00:31
2015/06/16 00:57
2015/06/16 01:31
2015/06/16 05:27
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/06/12 10:14
2015/06/15 08:49
2015/06/17 00:58
2015/06/17 07:32
2015/06/17 09:47
2015/06/17 14:24
2015/06/18 02:26