IOS,定時器

調用一次計時器方法:app

  1. myTimer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(scrollTimer) userInfo:nil repeats:NO];
  2. //不重複,只調用一次。timer運行一次就會自動中止運行  spa

重複調用計時器方法:code

timer =  [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(function:) userInfo:nil repeats:YES];
  1. //每1秒運行一次function方法。  內存


注意:將計數器的repeats設置爲YES的時候,self的引用計數會加1。所以可能會致使self(即viewController)不能release,因此,必須在viewWillAppear的時候,將計數器timer中止,不然可能會致使內存泄露。
get

中止timer的運行,但這個是永久的中止:(注意:中止後,必定要將timer賦空,不然仍是沒有釋放。不信?你本身試試~)it

  • /取消定時器  
    [timer invalidate];  
    timer = nil;

要想實現:先中止,而後再某種狀況下再次開啓運行timer,能夠使用下面的方法:io

首先關閉定時器不能使用上面的方法,應該使用下面的方法:ast

  1. //關閉定時器  function

  2. [myTimer setFireDate:[NSDate distantFuture]];  class

而後就能夠使用下面的方法再此開啓這個timer了:

  1. //開啓定時器  

  2. [myTimer setFireDate:[NSDate distantPast]];  

例子:好比,在頁面消失的時候關閉定時器,而後等頁面再次打開的時候,又開啓定時器。

(主要是爲了防止它在後臺運行,暫用CPU)能夠使用下面的代碼實現:

  1. //頁面將要進入前臺,開啓定時器  

  2. -(void)viewWillAppear:(BOOL)animated  

  3. {  

  4.     //開啓定時器  

  5.     [scrollView.myTimer setFireDate:[NSDate distantPast]];  

  6. }  

  7.   

  8. //頁面消失,進入後臺不顯示該頁面,關閉定時器  

  9. -(void)viewDidDisappear:(BOOL)animated  

  10. {  

  11.     //關閉定時器  

  12.     [scrollView.myTimer setFireDate:[NSDate distantFuture]];  

  13. }  

相關文章
相關標籤/搜索