ロクナナワークショップ NEWS & REPORT

レポート「FlashユーザーのためのiPhoneアプリ開発入門」

この記事を読むのに必要な時間:およそ 4 分

オブジェクトの寿命管理の話

Objective-Cでは参照カウンタ方式に基づいており,オブジェクトの生成に,alloc(オブジェクトの生成)⁠寿命管理に,release(カウンタを1下げる)⁠retain(カウンタを1上げる)⁠autorelease(カウンタを自動的に1下げるフラグを立てる)計4つのメソッドを使用する。

オブジェクトの寿命管理の4つのメソッド

オブジェクトの寿命管理の4つのメソッド

オブジェクトは,このカウンタを任意に0にしない限り,永遠に存続し続け,メモリを逼迫することになる。⁠releaseは忘れやすく,忘れるとメモリの少ないiPhoneの場合,アプリ落ちてしまう」という。この寿命管理は,基本的に必ずreleaseをしなければならないが,一時的にオブジェクトを生成する場合には,autoreleaseを実行することでRunLoopに戻ったときに,releaseが呼び出されるといった処理が可能になるという例5)⁠

例5

Calc *calc = [[Calc alloc] init];
[calc add:1 plus:2];
[calc release];
↓
Calc *calc = [[[Calc alloc] init] autorelease];
[calc add:1 plus:2];

便利なautoreleaseだが,オブジェクトが一時的にしか保持されないため,メンバ変数などに長時間保持しておきたい場合にはこの方法は使用できない。そこで,retainを使い,autoreleaseをした状態であっても解放されないように工夫する必要がある。だが,その場合は,保持され続け解放されないため,releaseの実行をしなければならない。

森氏は,これらの寿命管理のベストプラクティスとして,⁠メンバ変数はdeallocで全部releaseするように書いておく”,⁠一時的なオブジェクトはautoreleaseを必ず付けることでrelease忘れを防げる”,そしてメンバ変数に代入する場合は,⁠自分で明示的に生成したものはそのまま代入,それ以外は必ずretain付きで代入する⁠ことを挙げた。

フレームワーク

フレームワークについての解説もあった。iPhoneアプリ開発の中核を担う,UIKitフレームワークは,UI周りを司るフレームワークのひとつで,ActionScript 3.0のSpriteに相当するUIViewや,それらのサブクラスであるUIButton, UILabel, UITextFieldがあると紹介した。

このフレームワークの特徴的な点はMVCに特化しているところだ。プログラミング言語として比較的ゆるいActionScript 3.0は意識しない限り,MVCの理解は必要ない。しかし,UIKitフレームワークでは,MVCの考えに基づいて設計されており,厳格にクラスの役目がModel,View,Controllerに分かれている。森氏によれば,⁠ControllerはModelおよびViewのオブジェクト

管理し,ModelのデータをViewに反映させる,繋ぐ役割。ViewはModelをまったく意識しない作りにするのが理想的。」と説明した。

フレームワークの解説後,TiltShift Generatorで使われているクラスを紹介。

TiltShift Generatorの例

TiltShift Generatorの例

ライブコーディング

最後に,AppleのIDEであるXCODEで実際にUIKitフレームワークを活用したライブコーディングが行われた。XCODEでのプロジェクト作成,ビルドに必要なクラスのジェネレートからスタートし,解説を交えて簡単なお絵かきアプリを作成した。このライブコーディングで作成した実際のソースは,下記URLにて公開されているので是非参考にしてほしい。

ライブコーディングで作成した絵かきアプリ

ライブコーディングで作成した絵かきアプリ

かなり濃い内容となったセッションだが,Objective-Cのシンタックスや基本については,ActionScript 3.0に十分な理解があるユーザーであれば,受け入れられる内容だったと思う。むしろ,本やインターネットで説明を読むよりも,大分わかりやすく学ぶことができた。

iPhoneアプリの開発においては,リソースがまだまだ少ない現在,このようなActionScriptユーザーのためのiPhoneアプリ・Objective-C講座はかなり貴重であり,ニッチである。だが,ニッチであったからこそ,ターゲットを絞り込んだセミナーはユーザーに対して大きな価値を生む。来場された方々も,今回のセミナーでiPhoneアプリ開発に対するハードルが下がったのではないだろうか。

(2009/10/8 加茂 雄亮)

著者プロフィール

ロクナナワークショップ(ロクナナワークショップ)

アドビ認定トレーニングセンター ロクナナワークショップでは,Web業界の第一線で活躍中の講師陣による,実践的な講座を開講しています。全ての講座は最大6名・1日6時間で完結する,PCを操作しながらの集中トレーニングです。

また,各方面で活躍中のクリエイターをお迎えし,最新技術やアイデアをご紹介いただくイベントも開催しています。学生割引もありますので,是非一度参加してみてください。

URL:https://67.org/ws/