NIMKitTimerHolder.m 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. //
  2. // NIMKitTimerHolder.m
  3. // NIM
  4. //
  5. // Created by amao on 5/16/14.
  6. // Copyright (c) 2014 amao. All rights reserved.
  7. //
  8. #import "NIMKitTimerHolder.h"
  9. @interface NIMKitTimerHolder ()
  10. {
  11. NSTimer *_timer;
  12. BOOL _repeats;
  13. }
  14. - (void)onTimer: (NSTimer *)timer;
  15. @end
  16. @implementation NIMKitTimerHolder
  17. - (void)dealloc
  18. {
  19. [self stopTimer];
  20. }
  21. - (void)startTimer: (NSTimeInterval)seconds
  22. delegate: (id<NIMKitTimerHolderDelegate>)delegate
  23. repeats: (BOOL)repeats
  24. {
  25. _timerDelegate = delegate;
  26. _repeats = repeats;
  27. if (_timer)
  28. {
  29. [_timer invalidate];
  30. _timer = nil;
  31. }
  32. _timer = [NSTimer scheduledTimerWithTimeInterval:seconds
  33. target:self
  34. selector:@selector(onTimer:)
  35. userInfo:nil
  36. repeats:repeats];
  37. }
  38. - (void)stopTimer
  39. {
  40. [_timer invalidate];
  41. _timer = nil;
  42. _timerDelegate = nil;
  43. }
  44. - (void)onTimer: (NSTimer *)timer
  45. {
  46. if (!_repeats)
  47. {
  48. _timer = nil;
  49. }
  50. if (_timerDelegate && [_timerDelegate respondsToSelector:@selector(onNIMKitTimerFired:)])
  51. {
  52. [_timerDelegate onNIMKitTimerFired:self];
  53. }
  54. }
  55. @end