IOS 中NSTimer定時(shí)器的使用
IOS 中NSTimer定時(shí)器的使用
NSTimery 定時(shí)器,主要用于進(jìn)行定時(shí)執(zhí)行指定方法,常用場(chǎng)景如:獲取驗(yàn)證碼的按鈕倒計(jì)時(shí);圖片輪播定時(shí)。
1 使用注意事項(xiàng):
1.1 倒計(jì)時(shí)時(shí)間間隔(時(shí)間單位是秒)
1.2 指定的執(zhí)行方法
1.3 實(shí)現(xiàn)指定執(zhí)行方法的對(duì)象
1.4 是否重復(fù)執(zhí)行
2 對(duì)象的內(nèi)存管理及銷毀
2.1 使用方法" invalidate "進(jìn)行停止
2.2 將對(duì)象設(shè)置為" nil "
2.3 特別是在返回到其他視圖控制器的時(shí)候,要在方法" - (void)viewWillDisappear:
(BOOL)animated "中(注意:不能在方法" - (void)dealloc 在設(shè)置)將timer停止,并設(shè)置為nil
// 有效釋放
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[timer invalidate];
timer = nil;
}
// 無(wú)效釋放
- (void)delloc
{
[timer invalidate];
timer = nil;
}
3 計(jì)時(shí)器啟用關(guān)閉繼續(xù)
3.1 開(kāi)始:
timer.fireDate = [NSDate distantPast];
3.2 停止:
timer.fireDate = [NSDate distantFuture];
3.3 繼續(xù):
[timer setFireDate:[NSDate date]];
使用示例(倒計(jì)時(shí)):
三種實(shí)例化方法,級(jí)對(duì)應(yīng)的停止方法
方法1
// 實(shí)例化方法1 初始化后即開(kāi)始執(zhí)行
if (self.timer == nil)
{
self.time = 10.0;
// 帶參數(shù)
NSNumber *number = @(self.time);
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDownTime:) userInfo:number repeats:YES];
// 非必要設(shè)置,實(shí)際已設(shè)置為 NSDefaultRunLoopMode 模式
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
// 關(guān)閉定時(shí)器方法1 [self.timer invalidate]; self.timer = nil;
方法2
// 實(shí)例化方法2 初始后化,需要調(diào)用" setFireDate "才開(kāi)始執(zhí)行
if (self.timer == nil)
{
self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countDownTime:) userInfo:nil repeats:YES];
// 非必要設(shè)置,實(shí)際已設(shè)置為 NSDefaultRunLoopMode 模式
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
[self.timer setFireDate:[NSDate distantFuture]];
}
self.time = 10.0;
[self.timer setFireDate:[NSDate distantPast]];
// 關(guān)閉定時(shí)器方法2 [self.timer setFireDate:[NSDate distantFuture]];
方法3
// 實(shí)例化方法3 初始化后,需要調(diào)用" fire "才開(kāi)始執(zhí)行
if (self.timer == nil)
{
self.timer = [NSTimer timerWithTimeInterval:1.0 target: self selector:@selector(countDownTime:) userInfo:nil repeats:YES];
// 必須設(shè)置 NSRunLoop 線程池,否則無(wú)效
[[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
}
self.time = 10.0;
[self.timer fire];
// 關(guān)閉定時(shí)器方法3 [self.timer invalidate]; self.timer = nil;
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站 的支持!
相關(guān)文章
iOS實(shí)現(xiàn)app間跳轉(zhuǎn)功能
這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)app間跳轉(zhuǎn)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05
詳解iOS開(kāi)發(fā)中使用storyboard創(chuàng)建導(dǎo)航控制器的方法
這篇文章主要介紹了iOS開(kāi)發(fā)中使用storyboard創(chuàng)建導(dǎo)航控制器的方法,包括對(duì)控制器聲明周期的控制介紹,代碼基于傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-01-01
iOS簡(jiǎn)單畫(huà)板開(kāi)發(fā)案例分享
這篇文章主要為大家分享了iOS實(shí)現(xiàn)簡(jiǎn)單畫(huà)板開(kāi)發(fā)案例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-04-04
iOS App中UITableView左滑出現(xiàn)刪除按鈕及其cell的重用
這篇文章主要介紹了iOS App中UITableView左滑出現(xiàn)刪除按鈕及其cell的重用的方法,實(shí)例代碼為傳統(tǒng)的Objective-C語(yǔ)言,需要的朋友可以參考下2016-03-03
iOS開(kāi)發(fā)實(shí)現(xiàn)下載器的基本功能(1)
這篇文章主要為大家詳細(xì)介紹了iOS開(kāi)發(fā)實(shí)現(xiàn)下載器基本功能的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-07-07
ios開(kāi)發(fā) try-catch引起的野指針問(wèn)題排查
這篇文章主要為大家介紹了ios開(kāi)發(fā) try-catch引起的野指針問(wèn)題排查,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
iOS小技能之字典轉(zhuǎn)模及對(duì)象相等性示例詳解
這篇文章主要為大家介紹了iOS小技能之字典轉(zhuǎn)模及對(duì)象相等性示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08

