スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]アプリを終了する処理について

以前「[iOS]アプリを切腹させてはいけない。」という記事を書きました。
ですが今回は話がこれと180度変わります。

今回はこのexit関数を利用して終了するような話の流れとなりました。
その経緯はサルでき寺子屋のほうで「アプリをバックグラウンドにまわらせる処理について」として質問をさせていただきました。

解答を頂いたandantino190さんには深く感謝致します、ありがとうございました。


今回の発端は逆転裁判のiphoneアプリを起動した際に発生しました。
このアプリケーションには終了というボタンが起動後の画面にあり、この終了処理について疑問がわきました。

以前、終了処理を書こうとした際に上記の"アプリは切腹できない"という考え方の下で開発を進めてきたため終了ボタンなどもってのほかだと考えておりました。
ところがこのアプリケーションではしっかりと終了を行い、タスクトレイに残っているのです。
この処理は私の開発中のアプリでも使えるのではないかと質問をさせていただいたところ、
exit(1)を利用する処理と、getpid()とkill()を組み合わせる処理を行う提案を頂きました。

結論としてはこのアプリはexit(1)を利用していたため、同じく私もexit(1)にて対応をさせていただくことになりました。

さて、このexit(1)を行う処理は以前HIG(iOS Human Interface Guidelines: Introduction)に違反するため行えない、と記載しましたがこれは誤りだと考えなおしました。

そもそもこの処理自体が悪いのではなく、突然終了するような処理を行うのが間違いであり、事前にそのような処理であると相手が理解しているのであれば処理をおこなっても問題はないのではないかと指摘を受けました。

ですので処理としてはただexit(1)で終了ではなく、
終了ボタンを押す-> 終了確認の選択肢を表示 -> 「はい」を選択時にexit(1)を呼び出す
というフローを取ることにしました。


ちなみにもう一つの方法であるgetpid()とkill()の組み合わせ処理については、この後のソースで利用法を紹介します。


では最後のソースです。
短いですが、利用する際はしっかり確認のウィンドウを表示して相手の確認を取ることをお忘れないようお願いします。

//exit(1)での処理
exit(1);

//getpid+killの組み合わせ(ただしこちらはあまり使わない方がよさそうな気がします)
//pid_t getpid(void);
//int kill(pid_t pid,int sig);
//SIGTERM:プロセス終了
kill(getpid(),SIGTERM);
(追記:20120904)この機能を搭載したアプリが申請に通りました。
このエントリーをはてなブックマークに追加

tag : iOS 終了処理

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。