NSZombieEnabled を有効にしてEXC_BAD_ACCESSに耐える

アプリ開発をしているときに、EXC_BAD_ACCESSが発生してしまうと原因不明でアプリが落ちてしまう。デバッガでどこで落ちるのか探して、原因となる行を特定して修正ということになるけども、もっと楽な方法が欲しい。

そこで出てくるのがNSZombieEnabledを有効にするというはなし。
設定方法は簡単

プロジェクトメニュー => アクティブな実行ファイル"○○"を編集

を開き「引数」タブをクリック。上下二つの設定項目のうち「環境に設定される変数」に設定

これで、EXC_BAD_ACCESS発生してもデバッガコンソールにより詳細な情報が出てくれる。便利めちゃ便利。

iPadの回転対応

iPadアプリを作る場合には、かならず回転に対応した状態で作らなければならぬらしい。

結論を先に言うと、Window-basedを使わずView-basedを使えと。

回転対応するにはUIViewController追加する。
これはきっと常識。



Window-basedなアプリを作成して、そこに必要なパーツを作成し追加していきながらアプリを組みたててた時。
popover使いたいなって思ってちょっと調べる。UIPopoverControllerはコンテンツの設定にUIViewControllerを使うようにAPIが設計されているので、ほぼ強制的にUIViewControllerのサブクラスを作成することになる。
これが回転対応してたらいいのではないか、、と思ってしまったのが間違いで、表示する為のpresentpopoverなんちゃらメソッドを実行しても表示はされるけども回転させると今まで表示してくれてたのがどこかにすっ飛ばされて、見えなくなってしまう。

UIViewControllerが必要というのは常識だけども、ちょっとした思い込みでハマってしまうんやね。

さて、これを解決する為にはpopoverを表示するメソッドpresentpopoverなんちゃらの実行時に指定するviewまたはbarbuttonitemが「回転対応するUIViewControllerに管理されたviewの上に乗っていること」が必要となる。

となると、結果として始めっからView-Basedなアプリにしとけばいいんじゃね?
たったこれだけで間違い少なく、ハマることもなく、面倒なく回転対応ができるわけ。

いじょ。


[参考]