1.myTimer?=?[NSTimer?scheduledTimerWithTimeInterval:1.5?target:self?selector:@selector(scrollTimer)?userInfo:nil?repeats:NO];//不重復(fù),只調(diào)用一次。timer運(yùn)行一次就會(huì)自動(dòng)停止運(yùn)行
2.timer?=??[NSTimer?scheduledTimerWithTimeInterval:1.0?target:self?selector:@selector(function:)?userInfo:nil?repeats:YES];//每1秒運(yùn)行一次function方法凳枝。
注意:將計(jì)數(shù)器的repeats設(shè)置為YES的時(shí)候竖共,self的引用計(jì)數(shù)會(huì)加1。因此可能會(huì)導(dǎo)致self(即viewController)不能release唾琼,所以团秽,必須在viewWillAppear的時(shí)候,將計(jì)數(shù)器timer停止晦譬,否則可能會(huì)導(dǎo)致內(nèi)存泄露疤苹。
3.停止定時(shí)器的運(yùn)行
[timer?invalidate];
timer?=?nil;
注意:停止后,一定要將timer賦空敛腌,否則還是沒有釋放卧土。
4.要想實(shí)現(xiàn):先停止,然后再某種情況下再次開啟運(yùn)行timer像樊,可以使用下面的方法:
首先關(guān)閉定時(shí)器不能使用上面的方法尤莺,應(yīng)該使用下面的方法:
//關(guān)閉定時(shí)器
[myTimer?setFireDate:[NSDate?distantFuture]];
然后就可以使用下面的方法再此開啟這個(gè)timer了:
//開啟定時(shí)器
[myTimer?setFireDate:[NSDate?distantPast]];
例子:
//頁面將要進(jìn)入前臺(tái),開啟定時(shí)器
-(void)viewWillAppear:(BOOL)animated
{
//開啟定時(shí)器
[scrollView.myTimer?setFireDate:[NSDate?distantPast]];
}
//頁面消失生棍,進(jìn)入后臺(tái)不顯示該頁面颤霎,關(guān)閉定時(shí)器
-(void)viewDidDisappear:(BOOL)animated
{
//關(guān)閉定時(shí)器
[scrollView.myTimer?setFireDate:[NSDate?distantFuture]];
}
5.初始化
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
注:不用scheduled方式初始化的,需要手動(dòng)addTimer:forMode:將timer添加到一個(gè)runloop中涂滴。
而scheduled的初始化方法將以默認(rèn)mode直接添加到當(dāng)前的runloop中.
舉例:
NSTimer *timer?= [NSTimer?scheduledTimerWithTimeInterval:10.0?target:self?selector:@selector(timerFired:)?userInfo:nil?repeats:NO];
或
NSTimer *myTimer?= [NSTimer ?timerWithTimeInterval:3.0?target:selfselector:@selector(timerFired:)userInfo:nilrepeats:NO];
[[NSRunLoop ?currentRunLoop]?addTimer:myTimerforMode:NSDefaultRunLoopMode];
6.觸發(fā)(啟動(dòng))
當(dāng)定時(shí)器創(chuàng)建完(不用scheduled的友酱,添加到runloop中后,該定時(shí)器將在初始化時(shí)指定的timeInterval秒后自動(dòng)觸發(fā)柔纵。
可以使用-(void)fire;方法來立即觸發(fā)該定時(shí)器缔杉;