解决NSTimer导致内存泄漏最简单的方式

265 阅读1分钟

#import "HTMINextViewController.h" #include <objc/runtime.h> #include <objc/message.h>

@interface HTMINextViewController ()

@property (nonatomic, strong) NSTimer *timer;

@property (nonatomic, strong) NSObject *target;

@end

@implementation HTMINextViewController

  • (void)dealloc { [_timer invalidate]; _timer = nil; }

  • (void)viewDidLoad { [super viewDidLoad]; _target = [NSObject new]; _timer = [NSTimer scheduledTimerWithTimeInterval:1 target:_target selector:@selector(fire) userInfo:@"test" repeats:YES];

    class_addMethod([_target class],@selector(fire),class_getMethodImplementation([self class], @selector(fire)),"v@:");//(IMP)fireIMP }

void fireIMP(id self, SEL _cmd) { NSLog(@"%@,%@",self,NSStringFromSelector(_cmd)); }

  • (void)fire { NSLog(@"timer "); }

@end