UIView+Category access dealloc or do something on UIView dealloc call [closed]-Collection of common programming errors
swizzle dealloc. it is evil but we do it too 😀
in +load of your category swizzle dealloc and you’re in
#import
#import
@interface T : NSObject
@end
@interface T (myCat)
@end
@implementation T
- (void)dealloc {
NSLog(@"2");
}
@end
@implementation T (myCat)
+ (void)load {
SEL originalSelector = @selector(NSSelectorFromString(dealloc));
SEL overrideSelector = @selector(xchg_dealloc);
Method originalMethod = class_getInstanceMethod(self, originalSelector);
Method overrideMethod = class_getInstanceMethod(self, overrideSelector);
if (class_addMethod(self, originalSelector, method_getImplementation(overrideMethod), method_getTypeEncoding(overrideMethod))) {
class_replaceMethod(self, overrideSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
} else {
method_exchangeImplementations(originalMethod, overrideMethod);
}
}
- (void)xchg_dealloc {
NSLog(@"1");
[self xchg_dealloc]; //calls original
}
@end