NSTimer

NSTimer 是一個(gè)定時(shí)器,可以完成任何定時(shí)功能;
NSTimer不是絕對(duì)精確的,中間耗時(shí)或阻塞錯(cuò)過(guò)下一個(gè)點(diǎn),那么下一個(gè)點(diǎn)就pass過(guò)去了,Timer可以精確到50-100毫秒

初始化

+ (NSTimer *)scheduledTimerWithTimerInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
//scheduled方法會(huì)將Timer默認(rèn)添加到當(dāng)前runloop中,如果不用scheduled方法,我們需要手動(dòng)addTimer:forMode: 將timer添加到一個(gè)runloop中。
// TimeInterval:
// 表示輸入一個(gè)時(shí)間間隔,CGFloat,以秒為單位
// target:
// 表示發(fā)送的對(duì)象
// selector:
// 方法選擇器
// userInfo:
// 此參數(shù)可以為nil,當(dāng)定時(shí)器失效時(shí),由你指定的對(duì)象保留和釋放該定時(shí)器
// repeats:
// 當(dāng)YES時(shí),定時(shí)器會(huì)自動(dòng)循環(huán)直到失效或被釋放,當(dāng)NO時(shí),只會(huì)執(zhí)行一次方法

NSTimer初始化中設(shè)為target的對(duì)象將被強(qiáng)引用一次,所以一般需要在viewWillDisappear等方法中[timer invalidate]將timer無(wú)效化,并賦空

啟動(dòng)Timer

- (void)fire;
// 這個(gè)方法是立即執(zhí)行一次Timer中的方法,實(shí)際上當(dāng)我們初始化了一個(gè)timer后,會(huì)在指定的timerInteval秒后自動(dòng)觸發(fā)
// 在重復(fù)執(zhí)行的定時(shí)器中調(diào)用此方法后立即觸發(fā)該定時(shí)器,但不會(huì)中斷其之前的執(zhí)行計(jì)劃;
// 在不重復(fù)執(zhí)行的定時(shí)器中調(diào)用此方法,立即觸發(fā)后,就會(huì)使這個(gè)定時(shí)器失效。

停止Timer

-(void)invalidate;
//用此方法停止之后要將timer賦空(timer = nil)
// 這是唯一一個(gè)可以將計(jì)時(shí)器從runloop中移出的方法。

注:
如果我們需要自定義一個(gè)計(jì)時(shí)器,注意不可以設(shè)為NSTimer的子類,因?yàn)镹STimer是一個(gè)虛類,其方法實(shí)現(xiàn)都是在其子類相應(yīng)中實(shí)現(xiàn)的,所以如果我們自定義NSTimer的子類,在重寫方法中寫[super init....]等實(shí)現(xiàn)時(shí)會(huì)報(bào)錯(cuò),因?yàn)镹STimer中根本沒(méi)有對(duì)應(yīng)方法的實(shí)現(xiàn)

參考資料以及擴(kuò)展:一個(gè)可以暫停和重啟的定時(shí)器分類

http://blog.csdn.net/samuelltk/article/details/7484533
博主:藍(lán)天客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容