我在 NSObject 上有一个类别,它应该包含一些东西。当我在一个对象上调用它时,我想重写它的 dealloc 方法来进行一些清理。
我想使用方法调配来做到这一点,但不知道怎么做。我发现的唯一示例是关于如何替换整个类的方法实现(在我的情况下,它将覆盖所有 NSObjects 的 dealloc - 我不想这样做)。
我想重写 NSObject 特定实例的 dealloc 方法。
@interface NSObject(MyCategory)
-(void)test;
@end
@implementation NSObject(MyCategory)
-(void)newDealloc
{
// do some cleanup here
[self dealloc]; // call actual dealloc method
}
-(void)test
{
IMP orig=[self methodForSelector:@selector(dealloc)];
IMP repl=[self methodForSelector:@selector(newDealloc)];
if (...) // 'test' might be called several times, this replacement should happen only on the first call
{
method_exchangeImplementations(..., ...);
}
}
@end