| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- //
- // NSTimer+AFSoundManager.m
- // AFSoundManager-Demo
- //
- // Created by Alvaro Franco on 10/02/15.
- // Copyright (c) 2015 AlvaroFranco. All rights reserved.
- //
- #import "NSTimer+AFSoundManager.h"
- #import <objc/runtime.h>
- @implementation NSTimer (AFSoundManager)
- +(id)scheduledTimerWithTimeInterval:(NSTimeInterval)inTimeInterval block:(void (^)())inBlock repeats:(BOOL)inRepeats {
-
- void (^block)() = [inBlock copy];
- id ret = [self scheduledTimerWithTimeInterval:inTimeInterval target:self selector:@selector(jdExecuteSimpleBlock:) userInfo:block repeats:inRepeats];
-
- return ret;
- }
- +(id)timerWithTimeInterval:(NSTimeInterval)inTimeInterval block:(void (^)())inBlock repeats:(BOOL)inRepeats {
-
- void (^block)() = [inBlock copy];
- id ret = [self timerWithTimeInterval:inTimeInterval target:self selector:@selector(jdExecuteSimpleBlock:) userInfo:block repeats:inRepeats];
-
- return ret;
- }
- +(void)jdExecuteSimpleBlock:(NSTimer *)inTimer {
-
- if([inTimer userInfo]) {
- void (^block)() = (void (^)())[inTimer userInfo];
- block();
- }
- }
- static NSString *const NSTimerPauseDate = @"NSTimerPauseDate";
- static NSString *const NSTimerPreviousFireDate = @"NSTimerPreviousFireDate";
- -(void)pauseTimer {
-
- objc_setAssociatedObject(self, (__bridge const void *)(NSTimerPauseDate), [NSDate date], OBJC_ASSOCIATION_RETAIN_NONATOMIC);
- objc_setAssociatedObject(self, (__bridge const void *)(NSTimerPreviousFireDate), self.fireDate, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
-
- self.fireDate = [NSDate distantFuture];
- }
- -(void)resumeTimer {
-
- NSDate *pauseDate = objc_getAssociatedObject(self, (__bridge const void *)NSTimerPauseDate);
- NSDate *previousFireDate = objc_getAssociatedObject(self, (__bridge const void *)NSTimerPreviousFireDate);
-
- const NSTimeInterval pauseTime = -[pauseDate timeIntervalSinceNow];
- self.fireDate = [NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate];
- }
- @end
|