1

私の質問は非常に簡単です: iPhone/iPad シミュレーターでは、nil ビュー コントローラーをプッシュすると、優雅なメッセージが表示されます。

Application tried to push a nil view controller on target

その後、アプリは何も起こらなかったかのように実行を続けます。これはまさに私がアプリに求めているタイプの動作です (私はファクトリ メソッドを持っており、インスタンスの作成に関する誤った要求に遭遇した場合、nil を返します)。

しかし、これが実際のiOSデバイスでそのまま飛ぶかどうかについては疑問があります. この開発の初期段階ではデプロイできないため、このアクションがクラッシュを引き起こすのか、それとも何もしないのか (予想どおり) を知りたいと思います。さらに、それが iOS で動作する場合、「悪いことをした」として Apple のレビュー プロセスで平手打ちを受けることはありますか?

4

2 に答える 2

2

Cocoa Touch メソッドに関しては、リファレンス ドキュメントに nil パラメータが有効であると明示的に記載されていない限り、nil パラメータを渡してはなりません。ドキュメントがあいまいな場合は、安全かどうかを判断するために (シミュレーターまたはその他の方法で) 経験的なテストに頼らないでください。Apple は将来の OS アップデートをリリースする可能性があり、これにより、既存のユーザーのアプリが突然クラッシュし始める可能性があります。その後、Apple がホットフィックスをレビューしている間、彼らはあなたのアプリに 1 ~ 2 週間悪い評価を与えます。リスクを冒すだけの価値はありません。

のドキュメントでpushViewController:animated:は、nil パラメータが指定された場合の動作を指定していないため、安全にプレイし、コードで nil をテストしてください。

于 2011-07-20T10:22:59.890 に答える
1

これは、まだ割り当てられていないビュー コントローラをプッシュしようとしていることを意味します。ナビゲーション コントローラーにプッシュする前に、ビュー コントローラーがnilでないことを確認してください。

nilがナビゲーション コントローラー スタックにプッシュされた場合、アプリは "アプリケーションが nil ビュー コントローラーをターゲットにプッシュしようとしました ... " というメッセージをコンソールにスローするだけで、アプリの実行を妨げることはありません。しかし、予期しない動作を防ぐために、nilをチェックしてより安全な側にいることは常に良いことです。

于 2011-07-20T09:03:52.787 に答える