調用一次計時器方法:app
myTimer = [NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(scrollTimer) userInfo:nil repeats:NO];
//不重複,只調用一次。timer運行一次就會自動中止運行 spa
重複調用計時器方法:code
timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(function:) userInfo:nil repeats:YES];
//每1秒運行一次function方法。 內存
注意:將計數器的repeats設置爲YES的時候,self的引用計數會加1。所以可能會致使self(即viewController)不能release,因此,必須在viewWillAppear的時候,將計數器timer中止,不然可能會致使內存泄露。
get
中止timer的運行,但這個是永久的中止:(注意:中止後,必定要將timer賦空,不然仍是沒有釋放。不信?你本身試試~)it
/取消定時器 [timer invalidate]; timer = nil;
要想實現:先中止,而後再某種狀況下再次開啓運行timer,能夠使用下面的方法:io
首先關閉定時器不能使用上面的方法,應該使用下面的方法:ast
//關閉定時器 function
[myTimer setFireDate:[NSDate distantFuture]]; class
而後就能夠使用下面的方法再此開啓這個timer了:
//開啓定時器
[myTimer setFireDate:[NSDate distantPast]];
例子:好比,在頁面消失的時候關閉定時器,而後等頁面再次打開的時候,又開啓定時器。
(主要是爲了防止它在後臺運行,暫用CPU)能夠使用下面的代碼實現:
//頁面將要進入前臺,開啓定時器
-(void)viewWillAppear:(BOOL)animated
{
//開啓定時器
[scrollView.myTimer setFireDate:[NSDate distantPast]];
}
//頁面消失,進入後臺不顯示該頁面,關閉定時器
-(void)viewDidDisappear:(BOOL)animated
{
//關閉定時器
[scrollView.myTimer setFireDate:[NSDate distantFuture]];
}