読者です 読者をやめる 読者になる 読者になる

キノコの自省録

テクノロジーとコンテンツの融合を目指して

iOS5が色々酷い

iPhoneアプリを作っていた人が退職するに当たり、
なぜか全く関係ない私の下に仕事の丸投げをしてった上、
ろくに説明もしないで出てったその前任者のコードがアンチパターンの見本市だったという、
若干やるせない日々を送っているのが近況のわけですが、
泣きっ面に蜂のごとく、iOS5がトドメを刺してくれました。
といってもiOS5は実際まだ1時間くらいしか触ってないのですが、
色々と動作が不安定で、一体何が原因でクラッシュしたのか検討もつかないという不思議OSです。
最新版のXCodeの使い方がよくわかっていないせいかもしれませんが。
iOS4.xでは何も問題なく動いている分、実に不思議です。


動作云々の前に、iOS4からそのまま移植したコードをコンパイルしたら、
画面が真っ白になるという現象にまず出くわして、先制パンチを食らいました。
window.backgroundColor = [UIColor blueColor];
のようにコードを書いても、全く色が変わりません。
bringSubViewToFromを呼んでも、全く効果がありませんでした。
なんというか、UIWindowの上に、白いビューがべたっと貼られている感じです。


原因は、xibファイルでした。
いつまで経っても一向に使いやすくならないInterfaceBuilderを立ち上げすらせずに放置し、
コードで直接

UIView* view = [ [UIView alloc] initWithFrame:]
のように部品を作る人はたぶん結構いると思いますが、
そういう人は、MainWindow.xibが真っ白なままになっていると思います。
iOS5では、どういうわけかMainWindow.xibのビューが最前面に張り付いてしまい、
下のビューを隠してしまいます。
Windowの初期化コードをまだあまりよくチェックしてないので、
そのあたりのコードでよろしくない書き方をしてしまっていたのかもしれませんが、
まあともかく、この現象が起きたらxibファイルを疑ってみてください。
iOS5 真っ白」で検索すると、そこそこヒットするので、
同じ嵌り方をしたアプリがちらほらあるようです。