weak参照なNSArrayを作る

2012/3/10 iPhone

NSNotificationの仕組みをちょっと自作したいな と思った時にweak参照なNSArrayが欲しくなったのですが、 情報がなかなか無かったのでメモっておきます。

weak参照をするだけのオブジェクトを作る

作り方は簡単で、ほんと「weak参照をするだけのオブジェクトを作る」というひとことだけで説明が住んでしまいます。 つまり、WeakObjectクラスを作り、WeakObjectクラスでは参照先のオブジェクトをweak参照し、 NSArrayではWeakObjectの方をretainする という方法です。 WeakObjectクラス

 @interface WeakObject : NSObject{ id _obj; } @property(assign, nonatomic) id obj; @end @implementation WeakObject @synthesize obj = _obj; @end 

使い方

 id obj; WeakObject \*weak = [[WeakObject alloc] init]; weak.obj = obj; NSArray \*array = [NSArray arrayWithObject:weak]; [weak release]; 
img_show