weak参照なNSArrayを作る

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

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

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

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

使い方

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