NSTimer 解决循环引用 自动取消

iOS中定时器NSTimer会对target强引用,定时器本身也需要给被强引用,要不然不会执行定时任务.经常会形成循环引用,所以返回的时候,必须要停止定时器.要不然不会释放.

最近新写了一个定时器,利用消息转发机制,避免循环引用,使用方便.可以自动销毁控制器.

用法如下,直接给NSObject添加的分类 方法导入头文件后直接使用, 默认已经添加runloop了


- (void)viewDidLoad {

    [super viewDidLoad];

//这是开启定时器  比正常的定时器多了一个key,取消定时器时候使用

    [self scheduledTimerWithTimeInterval:2 target:self

                                selector:@selector(test)userInfo:nilrepeats:YESkey:@"abc"];

    [self scheduledTimerWithTimeInterval:2 target:self

                                selector:@selector(test2)userInfo:nilrepeats:YESkey:@"abc1"];

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent*)event {

//取消定时器 根据key取消

    [self stopTimerWithKey:@"abc1"];

}

- (void)test {

    NSLog(@"哈哈哈 我正在运行test1");

}

- (void)test2 {

    NSLog(@"哈哈哈 我正在运行test2");

}

好了 ,这样就可以愉快的使用timer了

demo

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容