iOS 7
  • Xcode3.2.4でiOS 7に対応する
Picture

★なぜ古い開発環境を使っているのか?

それはiOS 3.2の環境をサポートするためです。OSをアップデートしていない初代iPadでも使えるアプリであり続けるためです。

こんな古い(Xcode 3.X)環境で現役アプリを作る場合も少ないとは思いますが、古いアプリのメンテナンス時に参考になれば幸いです。

★Text Kit のセミナーやります

MOSA Software Meeting 2013 の Text Kit のセッションを高橋が担当します。iOS 7の濃いセッション多数です!
イベントは2013年11月29・30日の二日間東京で開催です。
(Text Kitのセッションは30日です)
Picture
MOSA Software Meeting 2013


★よみづくえ

Picture
iBooksをインストールできない古いiPadでも使える青空文庫リーダー、100作品内蔵ですぐ読めます。

iOS 3.2から対応なのですべてのiPadで使えます。

Picture

★昔のApple本社

1990年代のAppleキャンパスには
虹色のアップルマークが掲げられ、
Macペイント ツールアイコンのオブジェがあった!

★良い事ずくめのAdHoc配布方法:OTA

誰でも使えるOTAによるAdHocアプリの配布方法

Xcode3.2.4 で iOS 7 に対応する

開発者の皆様iOS 7 への対応はすんなりできたでしょうか? 古い開発環境でもiOS 7に対応する方法をメモしておきます。

iOS 7GMでテストしていてiPad用アプリの「よみづくえ」が本体の回転に対応していない問題がみつかりました。
もちろんiOS 6では問題なし、iOS 7GMだけの問題です。
このアプリはiPad用にはじめて作ったアプリで開発環境は当時のままXcode3.2.4を使っています。古いOS X(10.6.8)ごとこのアプリのビルド用に残しています。

まず疑ったのがiOS 6 で回転関連部分の処理が大きく変わった影響です。最初にinfo.plistのUISupportedInterfaceOrientations~ipad指定を追加してみました。古いアプリなのでこの設定は入れていなかったのです。
この設定を追加して試したところ状況は変わらず。
Picture
いろいろ試した結果 window.rootViewController に UIViewControllerのインスタンスをセットが必要であることが確認できました。
しかし古い開発環境ではUIWindowにrootViewControllerのプロパティがない(iOS 4以降のため)。
そこで
if ([window respondsToSelector:@selector(setRootViewController:)]) {
    [window setRootViewController:mainViewController];
}
としました。これで古い環境でもiOS 7でも無事回転するようになりました。
AdHocアプリをビルドしてiOS 7 GM の実機で確認したところ、起動画面にも問題がありました。
こちらもiOS 6まではポートレート用・ランドスケープ用の起動画面が表示されていたので気がつかなかったのですが、画像のファイル名が
Default-Landscape.png
Default-Portrait.png
のままでした。これを
Default-Landscape~ipad.png
Default-Portrait~ipad.png
に修正して再ビルドすると iOS 7 でも回転に対応した起動画面を表示するようになりました。

iOS 6までの実行環境はiOS 3.2にまでさかのぼって互換性があったものが、iOS 7 ではベースSDKが古いと問題が表面化するようになってしままいました。もちろんいつまでも互換性を確保することはできないのでこれはしかたがない事ですね。

本文の表示はCoreTextなのでiOS 7でもまったく問題ありませんでした。幸いiSO 7対応が必要だったのはこの回転部分のほかは、若干細かな挙動が変わったメソッドがあり対応が必要だった程度でした。
すぐに新しいアプリを申請したところすぐに公開になり、iOS 7 に間に合いました。
Create a free web site with Weebly