diff --git a/Classes/HWWeakTimer.h b/Classes/HWWeakTimer.h old mode 100644 new mode 100755 diff --git a/Classes/HWWeakTimer.m b/Classes/HWWeakTimer.m old mode 100644 new mode 100755 index e12b35f..c3ac417 --- a/Classes/HWWeakTimer.m +++ b/Classes/HWWeakTimer.m @@ -36,7 +36,7 @@ - (void) fire:(NSTimer *)timer { if(self.target) { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Warc-performSelector-leaks" - [self.target performSelector:self.selector withObject:timer.userInfo afterDelay:0.0f]; + [self.target performSelector:self.selector withObject:timer.userInfo afterDelay:0.0f inModes:@[NSRunLoopCommonModes]]; #pragma clang diagnostic pop } else { [self.timer invalidate]; @@ -55,11 +55,15 @@ + (NSTimer *) scheduledTimerWithTimeInterval:(NSTimeInterval)interval HWWeakTimerTarget* timerTarget = [[HWWeakTimerTarget alloc] init]; timerTarget.target = aTarget; timerTarget.selector = aSelector; - timerTarget.timer = [NSTimer scheduledTimerWithTimeInterval:interval - target:timerTarget - selector:@selector(fire:) - userInfo:userInfo - repeats:repeats]; + + NSTimer *timer = [NSTimer timerWithTimeInterval:interval + target:timerTarget + selector:@selector(fire:) + userInfo:userInfo + repeats:repeats]; + + [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; + timerTarget.timer = timer; return timerTarget.timer; }