使用できなくなるクラスやメソッド - Automatic Reference Counting
SPECIAL
使用できなくなるクラスやメソッド
ARC (Automatic Reference Counting) を有効にすることで、参照カウンタを操作する関係のメソッドは利用できなくなります。
- retain
- release
- autorelease
- assign
これらのお馴染みのメソッドがコンパイルエラーになるので、これまで ARC を使用していなかったプロジェクトで ARC を有効にすると、エラーが山ほど報告されると思います。
また、次の参照カウンタに係るクラスも、使用することができなくなるようでした。
- NSAutoreleasePool
このクラスによるオートリリースプールの管理に代わって、ARC では @autoreleasepool ディレクティブを使ってオートリリースプールを管理することになります。
// ARC が有効の場合のオートリリースプール
@autoreleasepool
{
// この内側で ARC オートリリースプールが有効になります。
}
また、逆に ARC を無効にすると @autoreleasepool は使用できなくなるため、ARC が無効の場合には従来通り NSAutoreleasePool クラスを使用して、オートリリースプールを管理する必要があります。
// ARC が無効の場合のオートリリースプール
NSAutoreleasePool* pool = nil;
@try
{
pool = [[NSAutoreleasePool alloc] init];
// 以下でオートリリースプールが有効になります。
}
@finally
{
[pool release];
}
ちなみに Xcode では、"NS_AUTOMATED_REFCOUNT_UNAVAILABLE" マクロをメソッドの定義に加えることで、ARC が無効の場合に、そのメソッドを使用できないようにすることも可能です。
// メソッドを ARC で禁止する場合
- (void)aMethod:(id)sender NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
{
// この内側で ARC オートリリースプールが有効になります。
}
クラスを ARC 環境で利用できなくしたい場合は、インターフェイスの宣言の前に "NS_AUTOMATED_REFCOUNT_UNAVAILABLE" マクロを加えます。
// クラスを ARC で禁止する場合
NS_AUTOMATED_REFCOUNT_UNAVAILABLE
@interface aClass : NSObject
{
}
このようにして、参照カウンタに深く関与する機能を、部分的に無効化することができます。