flashをずっと開発してきた人間がiOS開発をやってみて

今月はじめに、業務で開発に携わっていた"デコラージュ"というアプリがリリースされました。

f:id:ushisantoasobu:20130330174735j:plain
Decollage~デコラージュ~ スタンプで出来るイラスト作成アプリ

これまで長くflash開発を続けてきましたが、上司へ意思表明して念願のiOS開発に携わらせていただきました。感謝。
社内で、flash開発してきた人間からみたiOS開発の醍醐味だったり所感だったり、をまとめた簡単な発表をしましたのでslideshareにアップしました。

似たような境遇を迎える人がいたら、目を通していただけると幸いです。

また口頭ベースでの資料となっていますので、スライドだけみてもわかりづらいところあると思いますのでここで補足しておこうと思います。

メモリ管理

ARCを使ってもメモリリークはガンガン起きるという話。
スライド25ページで例として紹介しているのは以前のエントリで詳細に書いたものです。

UITableViewCellの再利用でメモリリーク

他にもCGImageRefの解放漏れだとか、ファイルサイズが大きいものをより快適なUXを目論んで先読みするという仕様だったのをプロデューサーに直訴してそれを表示する直前で読み込むようにした、などがありました。

画像キャッシュ

大量の、しかも比較的ファイルサイズの大きい画像を扱うアプリであるため、かなり早い段階から画像キャッシュの機構についてはみんなで考えました。
簡単にいうと、頻繁にアクセスする画像については「メモリキャッシュ→ディスクキャッシュ→画像サーバ」の順番でみていくというもの。
下記の記事を参考にしました。こちらも感謝。

ダウンロードした画像をキャッシュするクラスの設計と実装について

マルチスレッド処理

スライドの58ページ目で具体的にあったこととして、並列処理のところに

  • 複数のパラメータを渡すと画像のパスを返してくれるシングルトンのクラスがあった
  • そのシングルトンは、はじめてアクセスがあったときにplistからデータを取得して、返すデータの準備をする

みたいな記述があったために、はじめて画像のパスを取得しようとしたときに、場合によってEXE_BAD_ACCESSが起きました。
なかなか原因見つけるのに時間がかかったため、複雑なものを書こうとするときは注意が必要ですね。

iOSのバージョン、デバイスの違い

Android開発をしている方からすれば「ナメてるのかー!!」言われるかもしれませんが、flash(PC)で開発をしてきた私にとっては結構めんどくさいものでした。
特にデバイス。"あるある"だとは思うのですが、スライド67ページでいっていることは、
「画面下のほうにテキストフィールドがあって、テキストフィールドをタップすると下からキーボードが表示される。iPhone5でみたときはとくに問題ないが、iPhone4Sなんかでみるとキーボードがそのテキストフィールドを隠してしまう。だからそのテキストフィールドを含むビューを画面上方にキーボード入力するときのみ移動してあげなくてはいけない」というもの。

なにはともあれ"デコラージュ"をみなさんDLしていただき、楽しんでいただければ幸いです!!