次のカテゴリ定義を考えると、ARC を使用する場合と使用しない場合の両方で -dealloc を処理するにはどうすればよいでしょうか? 私は現在 ARC を使用しており、私の知る限り、Instruments をいじってみると、プロパティはクリーンアップされていますが、100% 信頼できるわけではありません。
@interface NSObject (SuperUsefulThingIWishAllNSObjectsHad)
@property (nonatomic, copy) NSString *foo;
@end
#import <objc/runtime.h>
@implementation NSObject (SuperUsefulThingIWishAllNSObjectsHad)
static const void *MyPropertyKey = &MyPropertyKey;
@dynamic foo;
- (NSString *)foo
{
return objc_getAssociatedObject(self,
MyPropertyKey);
}
- (void)setFoo:(NSString *)foo
{
objc_setAssociatedObject(self,
MyPropertyKey,
foo,
OBJC_ASSOCIATION_COPY);
}
これは私自身の啓蒙のためのものですが、解決策があまりにもハックでなければ、実際にこれを使用したい場所がいくつかあるかもしれません.