标签:target timer selector 循环 引用 NSTimer repeats userInfo
#import <Foundation/Foundation.h> /** Timer 间接事件目标代理 */ @interface WeakTimerTarget : NSObject @property (nonatomic, weak) id target; @property (nonatomic, assign) SEL selector; @property (nonatomic, weak) NSTimer* timer; + (NSTimer *) scheduledTimerWithTimeInterval:(NSTimeInterval)interval target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats; @end
#import "WeakTimerTarget.h" @implementation WeakTimerTarget + (NSTimer *) scheduledTimerWithTimeInterval:(NSTimeInterval)interval target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats { WeakTimerTarget *timerTarget = [[WeakTimerTarget alloc] init]; timerTarget.target = aTarget; timerTarget.selector = aSelector; timerTarget.timer = [NSTimer scheduledTimerWithTimeInterval:interval target:timerTarget selector:@selector(fire:) userInfo:userInfo repeats:repeats]; return timerTarget.timer; } - (void)fire:(NSTimer *)timer{ if(self.target) { [self.target performSelector:self.selector withObject:timer.userInfo]; } else { [self.timer invalidate]; } } - (void)dealloc{ NSLog(@"%s",__func__); } @end
调用:
NSTimer *sendMailRetryTimer = [WeakTimerTarget scheduledTimerWithTimeInterval:60*10 target:self selector:@selector(sendMailRetry) userInfo:nil repeats:YES];
主要隔离timer引用的Target不为self.
标签:target,timer,selector,循环,引用,NSTimer,repeats,userInfo
来源: https://www.cnblogs.com/HJiang/p/16263528.html
本站声明:
1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。