RollToEverをiOS6+iPhone5に対応した際のメモ


RollToEverの更新作業がだいたい終わったので作業内容をメモしておきます。

ARC関連の修正

移行直後はARC関連でコンパイルエラーになる箇所があったり無かったりします。

基本的には

  • オブジェクト生成はalloc initのみ、retainは使わない
    • autoreleaseしたい場合はAutorelease Pool Blocksを使う。@autoreleasepool{ }で囲うやつ。
  • releaseを呼ばない
  • dealloc内で[super dealloc]を呼ばない
  • 解放したい場合はnilを入れる
    • strongプロパティの場合はdeallocで必ずnilを入れるようにする
    • weakやassignの場合は放置でOK

こんな感じで対応できます。

元々ARCには対応していたのでほぼ問題は無かったんですが、一部コンパイルエラーが出ていたので修正をしました。

サードパーティのコードで ARC非対応の場合はコンパイルオプションで「-fno-objc-arc」を指定します。

Noarc

プロパティの@synthesizeの削除

Xcode4.4から@synthesizeは不要になりました。

プロパティの実体となる変数へのアクセスは、プロパティ名の頭にアンダースコア「_」をつけたものになります。

例外的に@synthesizeを使うとしたら、プロパティが参照する変数を明示的に指定したい場合とかですかね。今回はその必要が無いので機械的にすべて削除しました。

プライベートメソッドを無名カテゴリで定義していたのを削除

公開しないメソッドは.mファイルに @interface Hoge() 〜 @endで定義してからその下の方で実装していましたが、この無名カテゴリでの定義が不要になりました。(Xcode4.3くらいから?)

なので全削除。ただしプライベートな@propertyが必要な場合にはこれまで通り無名カテゴリを使います。

Boxed Expressions対応

NSString *hoge = @”ほげほげ” ってやつです。

今まで文字列(NSString)だけだったのが、NSNumberやらNSDictionaryやらでも使えるようになりました。

RollToEverだと置き換えられるコードは(たぶん)無かったので特に対応はしていませんが、以後この書式を使っていこうと思います。

参考:Objective-C Literals

Outletをすべてweakプロパティに変更

昔の名残で古いコードでいくつかOutletがstrongになっている箇所があったので、すべてweakに統一。

weakは大本が消えるとnilになるので、ダングリングポインタにならず素敵です。

参考:[iOS5] ARC : Outletにはweakプロパティを使おう – iOS 開発ブログ Natsu’s note

画像リソースの対応

4インチ対応でいくつかの画像が必要になります。

スプラッシュ画像

Default-568h@2x.png というファイル名で、解像度は640 × 1136です。

Large App Icon

提出時に必要で、1024 x 1024のサイズのアプリアイコンです。iTunes Connectからアップロードします。

4インチ用スクリーンショット

提出時に必要で、iPhone5用のいわゆる縦長のスクリーンショットが追加で必要になります。こちらもiTunes Connectからアップロードします。

StoryBoard周りの修正

ビューの背景色の修正

ビューの背景色に「groupTableViewBackgroundColor」が使えなくなったようなwarningが出ていたので、他の適当な色に変更しました。

各ビューオブジェクトのAutosizingの調整

ラベルやボタンを配置するとき、特に何もしないと左上に張り付いて設定されるので、4インチ環境になった場合に画面下側が殺風景な事になります。

なので、Autosizingの設定を変更しました。

After

上下を外すとセンター合わせ、下のみで下側合わせです。
場合により使い分ければ良いと思いますが、RollToEverの場合はほぼ全面的に上下外しのセンター合わせにしました。

  1. 最新版にした所エラー頻発で使えなくなりました
    iOS6です
    ダウンロードし直して20枚中4枚送れた所で
    code2エラーというのになってその後は何も送れません
    有料になっても全然良いので
    直していただきたいです…

    • エラーの原因は調べないとわかりませんが、
      可能な限りアップロードを続ける仕様に変更しようと思います。
      ご面倒おかけしますが、今しばらくお待ちください。

      ちなみに、カメラやスクショ以外で取り込んだ画像、例えばブラウザから保存した画像が含まれる場合、エラーが起こる可能性が高いのではないかと考えています。
      心当たりのある画像が含まれているようでしたら、PC等に退避した上で削除していただくとアップロードが進むかもしれません。

    • 調査したところ、スクリーンショット画像のアップロードに失敗する不具合が見つかりました。
      修正したバージョンを本日中にAppleに提出します。
      今しばらくお待ち下さい。

  2. お返事ありがとうございます!
    無料のアプリなのに本当に申し訳ないです
    とても便利に使わせていただいているので助かります
    スクショを削除して送信してみた所
    確かに送信出来ました
    どうでもいいスクショだったので
    これでしばらくしのげます!ありがとうございました
    対応も大変嬉しく思います

  3. こんにちは!先日コメントさせていただいたものです
    本日バージョンアップをして直りましたーーー!
    やったー!ありがたいです!!!
    本当にありがとうございました!!!

Leave a Comment