使用できなくなるクラスやメソッド - 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

{

 

}

このようにして、参照カウンタに深く関与する機能を、部分的に無効化することができます。

[ Automatic Reference Counting 目次へ ]