iOS開發(fā):NSTimer溯祸,計時器的使用

原文來自:?https://blog.csdn.net/CC1991_/article/details/81070986

一叹俏、NSTimer的初始化創(chuàng)建

? ? ? ? 1、初始化計時器

?? ?(1)官方API的兩個方法:

?? ?+ (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方式初始化的嚷往,需要手動addTimer:forMode: 將timer添加到一個runloop中葛账;而有scheduled的初始化方法將可以默認(rèn)mode直接添加到當(dāng)前的runloop中。

?? ?(2)具體實(shí)例如下所示:

?? ?@property (nonatomic, strong) NSTimer *timer; //聲明計時器屬性

?? ?方法一:

?? ?self.timer = [NSTimer timerWithTimeInterval:5*60 target:self selector:@selector(printNum) userInfo:nil repeats:YES];

? ?? ?[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];

?? ?方法二:

?? ?self.timer = [NSTimer scheduledTimerWithTimeInterval:5*60 target:self selector:@selector(printNum) userInfo:nil repeats:YES]; //初始化一個5分鐘執(zhí)行一次的計時器

tableView滑動時皮仁,加入?[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSDefaultRunLoopMode];籍琳,不然,計時器會出現(xiàn)卡頓等其他現(xiàn)象

?NSTimer初始化方法一贷祈,里面沒有scheduled趋急,所以必須要手動addTimer:,將timer添加到runloop中势誊;方法二中有scheduled的初始化方法呜达,將以默認(rèn)的mode把timer添加到當(dāng)前的runloop中。

? ? ? ? 二粟耻、計時器觸發(fā)操作

? ? ? ? 當(dāng)定時器創(chuàng)建完(不用scheduled的)添加到runloop中后查近,該定時器將在初始化時指定的timeInterval秒后自動觸發(fā)眉踱,可以使用-(void)fire;方法來立即觸發(fā)該定時器。

? ? ? ?在重復(fù)執(zhí)行的定時器中調(diào)用這個方法后會立即觸發(fā)該定時器霜威,但不會中斷其之前的執(zhí)行計劃谈喳。在不重復(fù)執(zhí)行的定時器中調(diào)用此方法,立即觸發(fā)后戈泼,就會使這個定時器失效婿禽。

? ? ? ? ?三、計時器停止操作

? ? ? ? ?NSTimer的停止操作只有一種方法可以將timer移除runloop大猛,具體操作如下所示:

? ? ? ? ?[self.timer invalidate]; //停止計時器的方法

? ? ? ? ?self.timer = nil; ? //為了防止意外谈宛,還是要把它賦值為nil的

? ? ? ?由于計時器NSTimer會保留目標(biāo)對象,等到它自身失效時再釋放這個對象胎署。調(diào)用invalidate方法可令計時器失效;執(zhí)行完相關(guān)任務(wù)后窑滞,一次性的計時器也會失效琼牧。如果將計時器設(shè)置成重復(fù)執(zhí)行的模式,那么必須要自己手動調(diào)用invalidate方法哀卫,才能令其停止巨坊。但是由于計時器會保留它的目標(biāo)對象,所以反復(fù)執(zhí)行任務(wù)會導(dǎo)致程序出問題此改,也就是說設(shè)置成重復(fù)執(zhí)行模式的那種計時器趾撵,容易形成“引用循環(huán)”,因此在這種情況下共啃,一定要記得調(diào)用終止計時器的invalidate方法才行占调。

?? ?四、使用計時器需要注意的地方

?? ?1移剪、倒計時的時間間隔(時間單位是秒究珊,可以精確到50-100毫秒);

?? ?2纵苛、指定的執(zhí)行方法剿涮;

?? ?3、實(shí)現(xiàn)指定執(zhí)行方法的對象攻人;

?? ?4取试、是否重復(fù)執(zhí)行;

?? ?5怀吻、使用方法" invalidate "進(jìn)行停止瞬浓;

?? ?6、將對象設(shè)置為" nil “烙博;

?? ?7瑟蜈、特別是在返回到其他視圖控制器的時候烟逊,要在" - (void)viewWillDisappear:

?????(BOOL)animated "方法中(特別注意:不能在" - (void)dealloc”方法中設(shè)置)將timer停止,并設(shè)置為nil铺根。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宪躯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子位迂,更是在濱河造成了極大的恐慌访雪,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件掂林,死亡現(xiàn)場離奇詭異臣缀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)泻帮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門精置,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锣杂,你說我怎么就攤上這事脂倦。” “怎么了元莫?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵赖阻,是天一觀的道長文留。 經(jīng)常有香客問我蹭越,道長,這世上最難降的妖魔是什么振劳? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任茎截,我火速辦了婚禮苇侵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘稼虎。我一直安慰自己衅檀,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布霎俩。 她就那樣靜靜地躺著哀军,像睡著了一般。 火紅的嫁衣襯著肌膚如雪打却。 梳的紋絲不亂的頭發(fā)上杉适,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機(jī)與錄音柳击,去河邊找鬼猿推。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蹬叭。 我是一名探鬼主播藕咏,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼秽五!你這毒婦竟也來了孽查?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤坦喘,失蹤者是張志新(化名)和其女友劉穎盲再,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瓣铣,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡答朋,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棠笑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片梦碗。...
    茶點(diǎn)故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蓖救,靈堂內(nèi)的尸體忽然破棺而出叉弦,到底是詐尸還是另有隱情,我是刑警寧澤藻糖,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站库车,受9級特大地震影響巨柒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柠衍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一洋满、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧珍坊,春花似錦牺勾、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至履怯,卻和暖如春回还,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叹洲。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工柠硕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人运提。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓蝗柔,卻偏偏與公主長得像闻葵,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子癣丧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 定時器的用法 系統(tǒng)提供了8個創(chuàng)建方法槽畔,6個類創(chuàng)建方法,2個實(shí)例初始化方法坎缭。有三個方法直接將timer添加到...
    gpylove閱讀 1,816評論 1 3
  • iOS中計時器常用的有兩種方式 使用NSTimer類(Swift 中更名為 Timer) NSTimer 常用的初...
    superDg閱讀 1,849評論 0 1
  • NSTimer 是系統(tǒng)提供的定時器竟痰,系統(tǒng)提供的api也比較簡單,使用很方便掏呼,項(xiàng)目開發(fā)中會經(jīng)常用到坏快。然而,在使用NS...
    戀空K閱讀 3,970評論 0 13
  • 這篇文章主要整理一下面試中會問到的一個知識點(diǎn):幾種計時器的知識點(diǎn)(一)NSTimer1.什么是NSTimer憎夷?官方...
    329fd8af610c閱讀 1,367評論 0 0
  • 再一次面試中被問到nstimer的爭取使用方法莽鸿,原理,我當(dāng)時就說了[_timer invalidate]拾给,time...
    iOS開發(fā)小平哥閱讀 4,059評論 1 13