2010-06-22
Viewが表示されなかった時のチェック項目
Tips |
Viewが表示されない原因には「Viewそのものにあるケース」、「ViewControllerにあるケース」、「その他」がある。
ここに書いたのはViewに原因があるケースを想定した、いわゆるポカミス用のチェックリスト。
分かってしまえば単純だが、チェック箇所が多いので見落としのないようにしたい。
※なお、ここではIBを利用せずにアプリを作っているケースを想定している。(IBを使った場合には、ソースファイル以外の場所を色々チェックしなくてはいけないのでバグつぶしで心が折れる。私には無理っぽい)
対象のSubViewそのものに原因がある場合
- インスタンスが作成されているか。
- frameを設定しているか。
- layoutSubviews など他のメソッドでframeを設定する処理になっている場合には、そちらのメソッドが呼び出されているか。
- frameに与える値が適当か、NSLogでチェック。(Viewの表示位置が正しくないケースなので、下記はレイアウト崩れにも共通して言える)
- 適切なViewにaddSubViewをしているか。
- 親のViewが表示されているか。表示されていなければ、(対象Viewではなく)その親Viewに原因あり。
SubView:その他のチェック項目
- Viewのライフサイクルは正常に管理されているか。(一般的なメモリ管理のチェック項目。単純だが数が多いので注意)
親Viewに問題がある場合
ここでは、windowに直接addSubViewされる大元のViewに問題がある場合のチェック項目を羅列する。
- インスタンスが作成されているか。(上と同じ)
- frameを設定しているか。(上と同じ)
- windowにaddSubViewされているか。[window addSubView:hogeView];が必要。
- 対象Viewが他Viewの後ろに隠れていないか。[window bringSubviewToFront:hogeView];が必要。
View以外に原因
- Windowに原因
- Windowが makeKeyAndVisible されているか。
- ViewControllerに原因
- ViewController側で余計なこと(通知をフックして放置するなど)をしていないか。
- 原因の切り分け、詳細状況の把握のために、強制的に描画イベントを発生させて(windowに対して addSubViewが行われたとき。画面のRotateが発生した。setNeedsDisplayメソッドあたり?)挙動を確かめる手もある。
コメントを書く
2010-06-13
iPhone/iPadアプリ開発で実機テストができなくなった時のチェック項目一覧
Tips |
一度は出来ていたのに、アプリが実機で走らなくなってしまった。
そんな時の確認項目一覧。
☆は、意外にこれで回復することってあるね という項目。
- 確認作業
- ☆Xcode上の設定に誤りはないか確認
- Xcode上で確認すべき項目は後述。
- 原因追求のため、hello worldのプロジェクトを作ってみる。
- 新規プロジェクトではiPad用のWindow-based Application。IBでは、Main WindowにHello Worldのlabelのみを貼りつけたものあたり。
- もちろん、シミュレータ上で正常動作することを確認すること。
- ☆Xcodeのオーガナイザーから全てのprovirioningを削除し、Provisioning Portalから再度ダウンしたProfileデータをXcodeのオーガナイザーで設定する。
- 期限切れによるProfileデータ入れ替えタイミングでトラブルが起きた時に、シミュレータでは動くけど実機では…という状況に陥るケースがあるようです。
- Provisioning PortalでProfileデータを新規作成して、Xcodeのオーガナイザーで設定する。
- ☆Xcode上の設定に誤りはないか確認
- 確認すべきXcode側の設定項目
上記の他に私が経験した例では、下記のパターンがあった。
トラブルと言うより、実機テストの仕様を私が知らなかっただけのような気がするのだが、一応ご参考まで。