概要

iOS5からARC(Automatic Reference Counting)と呼ばれる新機能が使えるようになりました。
メモリ管理に関する機能で、特定のルールに従ってコーディングすることで、オブジェクトのretain/releaseに関するコードをコンパイル時に自動挿入する機能のようです。

iOS5の新機能と書きましたが、正確にはiOS5 SDKに付属しているApple LLVM Compiler 3.0に実装されている機能です。したがってアプリを動かす端末はiOS5である必要はなさそうです。

Xcodeを4.2にアップデートし、ビルドオプションを有効にすれば、既存のプロジェクトでも使用可能です。プロジェクトのBuild Settingsで「Automatic Reference Counting」で検索してください。

使い方

ARCを使ったサンプルコードがこちらで公開されていました。
iOS 5 公開記念! Objective-Cのメモリ管理の革命、 ARC 超入門

実装ファイルでインスタンス変数を定義しているのが目をひきます。

  1. 外部に公開する必要のないインスタンス変数を実装コードに押し込める
  2. アウトレット接続したインスタンスの解放が必要なくなる

とかいわれると積極的に使いたくなってきましたね!

マイプロジェクトのコードをARCを使って書き直してみた

インスタンス変数は明示的にプロパティアクセスしたいため、ARCでもプロパティ宣言しています。
ARCで定義したインスタンス変数をプロパティ宣言する場合、専用のパラメータを指定する必要があるみたいです。

CreditViewController.h

#import <UIKit/UIKit.h>

@interface CreditViewController : UIViewController {
}
@end

CreditViewController.m

#import "CreditViewController.h"

@interface CreditViewController ()
@property (weak) UILabel *revision;
@property (weak) UILabel *repository;
@property (weak) UILabel *message;
@property (weak) UILabel *volume;
@end

@implementation CreditViewController {
  IBOutlet UILabel *revision;
  IBOutlet UILabel *repository;
  IBOutlet UILabel *message;
  IBOutlet UILabel *volume;
}

- (void)loadView {
  [super loadView];
  self.revision.text   = @"revision";
  self.repository.text = @"repository";
  self.message.text    = @"message";
  self.volume.text     = @"volume";
}

関連リンク

こたつつきみかん – ARCの解説