Objective-C計(jì)時(shí)器NSTimer學(xué)習(xí)筆記
NSTimer - 計(jì)時(shí)器
NSTimer派生自NSObject,是一種計(jì)時(shí)器,在經(jīng)過一定的時(shí)間間隔后觸發(fā),向目標(biāo)對(duì)象發(fā)送指定的消息。
計(jì)時(shí)器(NSTimer)與運(yùn)行循環(huán)(RunLoop)一起工作。運(yùn)行循環(huán)維護(hù)對(duì)其計(jì)時(shí)器的強(qiáng)引用,因此在將計(jì)時(shí)器添加到運(yùn)行循環(huán)后,不必自己維護(hù)對(duì)計(jì)時(shí)器的強(qiáng)引用。
計(jì)時(shí)器不是實(shí)時(shí)機(jī)制。如果計(jì)時(shí)器的觸發(fā)時(shí)間發(fā)生在長(zhǎng)運(yùn)行循環(huán)調(diào)用期間,或者當(dāng)運(yùn)行循環(huán)處于不監(jiān)視計(jì)時(shí)器的模式時(shí),計(jì)時(shí)器在下次運(yùn)行循環(huán)檢查計(jì)時(shí)器之前不會(huì)觸發(fā),因此計(jì)時(shí)器觸發(fā)的實(shí)際時(shí)間可能要晚得多。
NSTimer創(chuàng)建計(jì)時(shí)器函數(shù)
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
函數(shù)描述 :使用指定的調(diào)用對(duì)象初始化計(jì)時(shí)器對(duì)象。必須使用addTimer:forMode:方法將初始化的計(jì)時(shí)器添加到運(yùn)行循環(huán)中(如果計(jì)時(shí)器配置為重復(fù),則一次計(jì)時(shí)結(jié)束無需將計(jì)時(shí)器重新添加到運(yùn)行循環(huán)中)。然后,在ti過去之后,計(jì)時(shí)器將觸發(fā),由調(diào)用對(duì)象執(zhí)行其調(diào)用。
參數(shù) :
ti :計(jì)時(shí)器觸發(fā)之間的秒數(shù)。如果ti小于或等于0.0,此方法將選擇非負(fù)值0.1毫秒。
invocation :計(jì)時(shí)器觸發(fā)時(shí)要使用的調(diào)用對(duì)象。計(jì)時(shí)器指示調(diào)用對(duì)象維護(hù)對(duì)其參數(shù)的強(qiáng)引用。
repeats :是否重復(fù),如果是YES,計(jì)時(shí)器將重復(fù)重新安排自己,直到失效。如果NO,計(jì)時(shí)器將在其觸發(fā)后失效。
返回值 :一個(gè)新的根據(jù)指定的參數(shù)進(jìn)行配置的NSTimer對(duì)象。
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;
函數(shù)描述 :使用指定的對(duì)象和選擇器初始化計(jì)時(shí)器對(duì)象。必須使用addTimer:forMode:方法將新計(jì)時(shí)器添加到運(yùn)行循環(huán)中(如果計(jì)時(shí)器配置為重復(fù),則一次計(jì)時(shí)結(jié)束無需將計(jì)時(shí)器重新添加到運(yùn)行循環(huán)中)。然后,經(jīng)過ti秒后,計(jì)時(shí)器啟動(dòng),向目標(biāo)發(fā)送selector消息。
參數(shù) :
ti :計(jì)時(shí)器觸發(fā)之間的秒數(shù)。如果ti小于或等于0.0,此方法將選擇非負(fù)值0.1毫秒。
aTarget :當(dāng)計(jì)時(shí)器觸發(fā)時(shí),選擇器指定要向其發(fā)送消息的對(duì)象。計(jì)時(shí)器維持對(duì)目標(biāo)的強(qiáng)引用,直到它(計(jì)時(shí)器)失效。
aSelector :計(jì)時(shí)器觸發(fā)時(shí)要發(fā)送給目標(biāo)的消息。
repeats :是否重復(fù),如果是YES,計(jì)時(shí)器將重復(fù)重新安排自己,直到失效。如果NO,計(jì)時(shí)器將在其觸發(fā)后失效。
返回值 :一個(gè)新的根據(jù)指定的參數(shù)進(jìn)行配置的NSTimer對(duì)象。
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (NS_SWIFT_SENDABLE ^)(NSTimer *timer))block API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));
函數(shù)描述 :使用指定的時(shí)間間隔和塊初始化計(jì)時(shí)器對(duì)象。必須使用addTimer:forMode:將新計(jì)時(shí)器添加到運(yùn)行循環(huán)中(如果計(jì)時(shí)器配置為重復(fù),則一次計(jì)時(shí)結(jié)束無需將計(jì)時(shí)器重新添加到運(yùn)行循環(huán)中)。然后,在間隔秒后,計(jì)時(shí)器啟動(dòng),執(zhí)行塊。
參數(shù) :
interval :計(jì)時(shí)器啟動(dòng)之間的秒數(shù)。如果間隔小于或等于0.0,此方法將選擇非負(fù)值0.1毫秒。
repeats :是否重復(fù),如果是YES,計(jì)時(shí)器將重復(fù)重新安排自己,直到失效。如果NO,計(jì)時(shí)器將在其觸發(fā)后失效。
block :計(jì)時(shí)器啟動(dòng)時(shí)要執(zhí)行的塊。該塊采用單個(gè)NSTimer參數(shù),并且沒有返回值。
返回值 :一個(gè)新的根據(jù)指定的參數(shù)進(jìn)行配置的NSTimer對(duì)象。
- (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (NS_SWIFT_SENDABLE ^)(NSTimer *timer))block API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));
函數(shù)描述 :使用指定日期與時(shí)間間隔以及一個(gè)塊初始化計(jì)時(shí)器對(duì)象。 必須使用addTimer:forMode:方法將新計(jì)時(shí)器添加到運(yùn)行循環(huán)中(如果計(jì)時(shí)器配置為重復(fù),則一次計(jì)時(shí)結(jié)束無需將計(jì)時(shí)器重新添加到運(yùn)行循環(huán)中)。在指定日期到達(dá)后計(jì)時(shí)器觸發(fā),之后每間隔interval秒,計(jì)時(shí)器觸發(fā),執(zhí)行block。
參數(shù) :
date :計(jì)時(shí)器應(yīng)首次啟動(dòng)的時(shí)間。
interval :計(jì)時(shí)器啟動(dòng)之間的秒數(shù)。如果間隔小于或等于0.0,此方法將選擇非負(fù)值0.1毫秒。
repeats :是否重復(fù),如果是YES,計(jì)時(shí)器將重復(fù)重新安排自己,直到失效。如果NO,計(jì)時(shí)器將在其觸發(fā)后失效。
block :計(jì)時(shí)器啟動(dòng)時(shí)要執(zhí)行的塊。該塊采用單個(gè)NSTimer參數(shù),并且沒有返回值。
返回值 :一個(gè)新的根據(jù)指定的參數(shù)進(jìn)行配置的NSTimer對(duì)象。
- (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(nullable id)ui repeats:(BOOL)rep NS_DESIGNATED_INITIALIZER;
函數(shù)描述 :使用指定的對(duì)象和選擇器初始化計(jì)時(shí)器。必須使用addTimer:forMode:方法將新計(jì)時(shí)器添加到運(yùn)行循環(huán)中(如果計(jì)時(shí)器配置為重復(fù),則一次計(jì)時(shí)結(jié)束無需將計(jì)時(shí)器重新添加到運(yùn)行循環(huán)中)。在指定日期到達(dá)后計(jì)時(shí)器觸發(fā),之后每間隔interval秒,計(jì)時(shí)器觸發(fā),向目標(biāo)發(fā)送aSelector消息。
參數(shù) :
date :計(jì)時(shí)器應(yīng)首次啟動(dòng)的時(shí)間。
ti :計(jì)時(shí)器啟動(dòng)之間的秒數(shù)。如果間隔小于或等于0.0,此方法將選擇非負(fù)值0.1毫秒。
t :當(dāng)計(jì)時(shí)器觸發(fā)時(shí),選擇器指定要向其發(fā)送消息的對(duì)象。計(jì)時(shí)器維持對(duì)目標(biāo)的強(qiáng)引用,直到它(計(jì)時(shí)器)失效。
s :計(jì)時(shí)器觸發(fā)時(shí)要發(fā)送給目標(biāo)的消息。
ui : 計(jì)時(shí)器的用戶信息。計(jì)時(shí)器維持對(duì)這個(gè)對(duì)象的強(qiáng)引用,直到它(計(jì)時(shí)器)失效。這個(gè)參數(shù)可以是nil。
rep : 是否重復(fù),如果是YES,計(jì)時(shí)器將重復(fù)重新安排自己,直到失效。如果NO,計(jì)時(shí)器將在其觸發(fā)后失效。
例如:需要添加到運(yùn)行循環(huán)中的計(jì)時(shí)器\color{red}{例如:需要添加到運(yùn)行循環(huán)中的計(jì)時(shí)器}例如:需要添加到運(yùn)行循環(huán)中的計(jì)時(shí)器
- (void)viewDidLoad { [super viewDidLoad]; //獲取方法簽名對(duì)象 NSMethodSignature *signature = [self methodSignatureForSelector:NSSelectorFromString(@"timerAction")]; //獲取調(diào)用對(duì)象,設(shè)置調(diào)用對(duì)象調(diào)用者與調(diào)用消息 NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature]; invocation.target = self; invocation.selector = NSSelectorFromString(@"timerAction"); //計(jì)時(shí)器加入運(yùn)行循環(huán) [[NSRunLoop mainRunLoop] addTimer:[NSTimer timerWithTimeInterval:1.0 invocation:invocation repeats:YES] forMode:NSRunLoopCommonModes]; } ///計(jì)時(shí)器調(diào)用函數(shù) - (void)timerAction { NSLog(@"計(jì)時(shí)器工作中"); }
不加入運(yùn)行循環(huán),則只會(huì)打印一次,加入運(yùn)行循環(huán)后,打印如下 :
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
函數(shù)描述 :創(chuàng)建計(jì)時(shí)器并以默認(rèn)模式在當(dāng)前運(yùn)行循環(huán)上調(diào)度它。在ti秒過去后,計(jì)時(shí)器觸發(fā),由調(diào)用對(duì)象執(zhí)行其調(diào)用。
參數(shù) :
ti :計(jì)時(shí)器啟動(dòng)之間的秒數(shù)。如果ti小于或等于0.0,此方法將選擇非負(fù)值0.1毫秒。
invocation :計(jì)時(shí)器觸發(fā)時(shí)要使用的調(diào)用對(duì)象。計(jì)時(shí)器指示調(diào)用對(duì)象維護(hù)對(duì)其參數(shù)的強(qiáng)引用。
repeats :是否重復(fù),如果是YES,計(jì)時(shí)器將重復(fù)重新安排自己,直到失效。如果NO,計(jì)時(shí)器將在其觸發(fā)后失效。
返回值 : 根據(jù)指定參數(shù)配置的新NSTimer對(duì)象。
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(nullable id)userInfo repeats:(BOOL)yesOrNo;
函數(shù)描述 :創(chuàng)建計(jì)時(shí)器并以默認(rèn)模式在當(dāng)前運(yùn)行循環(huán)上調(diào)度它。在ti秒過去后,計(jì)時(shí)器觸發(fā),發(fā)送消息選擇器到目標(biāo)。
參數(shù) :
ti :計(jì)時(shí)器啟動(dòng)之間的秒數(shù)。如果ti小于或等于0.0,此方法將選擇非負(fù)值0.1毫秒。
aTarget :當(dāng)計(jì)時(shí)器觸發(fā)時(shí),選擇器指定要向其發(fā)送消息的對(duì)象。計(jì)時(shí)器維持對(duì)目標(biāo)的強(qiáng)引用,直到它(計(jì)時(shí)器)失效。
aSelector :計(jì)時(shí)器觸發(fā)時(shí)要發(fā)送給目標(biāo)的消息。
userInfo : 計(jì)時(shí)器的用戶信息。計(jì)時(shí)器維持對(duì)這個(gè)對(duì)象的強(qiáng)引用,直到它(計(jì)時(shí)器)失效。這個(gè)參數(shù)可以是nil。
repeats : 是否重復(fù),如果是YES,計(jì)時(shí)器將重復(fù)重新安排自己,直到失效。如果NO,計(jì)時(shí)器將在其觸發(fā)后失效。
返回值 : 根據(jù)指定參數(shù)配置的新NSTimer對(duì)象。
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)interval repeats:(BOOL)repeats block:(void (NS_SWIFT_SENDABLE ^)(NSTimer *timer))block API_AVAILABLE(macosx(10.12), ios(10.0), watchos(3.0), tvos(10.0));
函數(shù)描述 :創(chuàng)建一個(gè)計(jì)時(shí)器,并在默認(rèn)模式下在當(dāng)前運(yùn)行循環(huán)中對(duì)其進(jìn)行調(diào)度。在間隔秒后,計(jì)時(shí)器啟動(dòng),執(zhí)行塊。
參數(shù) :
interval : 計(jì)時(shí)器啟動(dòng)之間的秒數(shù)。如果間隔小于或等于0.0,此方法將選擇非負(fù)值0.1毫秒。
repeats :是否重復(fù),如果是YES,計(jì)時(shí)器將重復(fù)重新安排自己,直到失效。如果NO,計(jì)時(shí)器將在其觸發(fā)后失效。
block :計(jì)時(shí)器啟動(dòng)時(shí)要執(zhí)行的塊。該塊采用單個(gè)NSTimer參數(shù),并且沒有返回值。
返回值 :一個(gè)新的根據(jù)指定的參數(shù)進(jìn)行配置的NSTimer對(duì)象。
例如:以默認(rèn)模式在當(dāng)前運(yùn)行循環(huán)上執(zhí)行計(jì)時(shí)器\color{red}{例如:以默認(rèn)模式在當(dāng)前運(yùn)行循環(huán)上執(zhí)行計(jì)時(shí)器 }例如:以默認(rèn)模式在當(dāng)前運(yùn)行循環(huán)上執(zhí)行計(jì)時(shí)器
- (void)viewDidLoad { [super viewDidLoad]; [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerAction) userInfo:nil repeats:YES]; } ///計(jì)時(shí)器調(diào)用函數(shù) - (void)timerAction { NSLog(@"計(jì)時(shí)器工作中"); }
打印如下 :
NSTimer觸發(fā)與銷毀計(jì)時(shí)器函數(shù)
- (void)fire;
函數(shù)描述:使計(jì)時(shí)器的消息被發(fā)送到它的目標(biāo)??梢允褂么朔椒▉碛|發(fā)重復(fù)計(jì)時(shí)器而不中斷其常規(guī)觸發(fā)計(jì)劃。如果計(jì)時(shí)器是非重復(fù)的,它在觸發(fā)后會(huì)自動(dòng)失效,即使它的預(yù)定觸發(fā)日期還沒有到達(dá)。
- (void)invalidate;
函數(shù)描述:停止觸發(fā)的計(jì)時(shí)器,并請(qǐng)求將其從運(yùn)行循環(huán)中刪除。這個(gè)方法是從NSRunLoop對(duì)象中刪除計(jì)時(shí)器的唯一方法。NSRunLoop對(duì)象會(huì)在invalidate方法返回之前或之后的某個(gè)時(shí)間點(diǎn)刪除它對(duì)計(jì)時(shí)器的強(qiáng)引用。如果配置了target和userInfo對(duì)象,計(jì)時(shí)器也會(huì)刪除對(duì)這些對(duì)象的強(qiáng)引用。
常用屬性
@property (copy) NSDate *fireDate;
屬性描述:計(jì)時(shí)器觸發(fā)的日期。如果計(jì)時(shí)器已經(jīng)失效,則為計(jì)時(shí)器觸發(fā)的最后日期??梢栽O(shè)置此屬性以調(diào)整重復(fù)計(jì)時(shí)器(repeats為YES)的觸發(fā)時(shí)間。盡管重置計(jì)時(shí)器的下一次觸發(fā)時(shí)間是一個(gè)相對(duì)昂貴的操作,但在某些情況下它可能更有效。例如,可以在未來想要以不規(guī)則的時(shí)間間隔多次重復(fù)某個(gè)操作的情況下使用它。調(diào)整單個(gè)計(jì)時(shí)器的觸發(fā)時(shí)間比創(chuàng)建多個(gè)計(jì)時(shí)器對(duì)象,在一個(gè)運(yùn)行循環(huán)中調(diào)度每個(gè)對(duì)象,然后銷毀它們所產(chǎn)生的開銷要小。
對(duì)于已經(jīng)失效的計(jì)時(shí)器(包括已經(jīng)觸發(fā)的非重復(fù)計(jì)時(shí)器),不應(yīng)該更改其觸發(fā)日期??梢愿纳形从|發(fā)的非重復(fù)計(jì)時(shí)器的觸發(fā)日期,但應(yīng)該始終從計(jì)時(shí)器所連接的線程進(jìn)行更改。使用valid屬性可以驗(yàn)證計(jì)時(shí)器是否有效。
@property (readonly) NSTimeInterval timeInterval;
屬性描述:計(jì)時(shí)器的時(shí)間間隔,以秒為單位。如果計(jì)時(shí)器不重復(fù),即使設(shè)置了時(shí)間間隔,也會(huì)返回0。
@property NSTimeInterval tolerance API_AVAILABLE(macos(10.9), ios(7.0), watchos(2.0), tvos(9.0));
屬性描述:計(jì)時(shí)器到達(dá)預(yù)定觸發(fā)日期,觸發(fā)時(shí)可以應(yīng)用的額外時(shí)間容差。默認(rèn)值為0,這意味著沒有應(yīng)用額外的容差。為計(jì)時(shí)器設(shè)置容差可以使其在預(yù)定觸發(fā)日期到達(dá)后,偏移計(jì)時(shí)器觸發(fā)。計(jì)時(shí)器可以在預(yù)定觸發(fā)日期與額外時(shí)間容差加上預(yù)定觸發(fā)日期之間的任何時(shí)間觸發(fā)。允許系統(tǒng)在計(jì)時(shí)器觸發(fā)時(shí)具有靈活性,可以提高系統(tǒng)優(yōu)化的能力,以提高功耗節(jié)省和響應(yīng)能力。
@property (readonly, getter=isValid) BOOL valid;
屬性描述:一個(gè)布爾值,用于指示計(jì)時(shí)器當(dāng)前是否有效。如果計(jì)時(shí)器仍然能夠觸發(fā),則為YES;如果計(jì)時(shí)器已經(jīng)失效并且不再能夠觸發(fā),那么為NO。
@property (nullable, readonly, retain) id userInfo;
屬性描述:計(jì)時(shí)器的userInfo對(duì)象。計(jì)時(shí)器無效后,不要訪問此屬性。使用valid屬性驗(yàn)證計(jì)時(shí)器是否有效。
NSRunLoop - 運(yùn)行循環(huán)
一個(gè)管理輸入源(手勢(shì)、Selector等)的對(duì)象,Runloop即運(yùn)行循環(huán),是iOS中的消息處理機(jī)制,其主要作用是控制NSRunLoop里面線程的執(zhí)行和休眠,當(dāng)某個(gè)事件執(zhí)行完成后,不退出其線程而進(jìn)入休眠狀態(tài),當(dāng)再次檢測(cè)到事件時(shí)。喚醒休眠的線程繼續(xù)處理事件。RunLoop可以保持程序的持續(xù)運(yùn)行,并節(jié)省CPU資源,提高程序性能。
NSRunLoop是對(duì)CFRunLoopRef的一層封裝, 是Objective-C的語法的框架。CFRunLoopRef是基于C語言的開源框架。
從NSRunLoop的角度來看,NSTimer對(duì)象并不是輸入源,它們是一種特殊的類型,當(dāng)它們被觸發(fā)時(shí),不會(huì)導(dǎo)致運(yùn)行循環(huán)返回。
NSRunLoop類通常不是線程安全的,只能在當(dāng)前線程的上下文中調(diào)用它的方法。
NSRunLoop 處理事件流程:
NSRunLoop常用屬性
@property (class, readonly, strong) NSRunLoop *currentRunLoop
屬性描述:類屬性,返回當(dāng)前線程的運(yùn)行循環(huán)(NSRunLoop對(duì)象)。如果線程還不存在運(yùn)行循環(huán),則會(huì)創(chuàng)建并返回一個(gè)運(yùn)行循環(huán)。
@property (class, readonly, strong) NSRunLoop *mainRunLoop API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));
屬性描述:類屬性,返回主線程的運(yùn)行循環(huán)(NSRunLoop對(duì)象)。
@property (nullable, readonly, copy) NSRunLoopMode currentMode;
屬性描述:調(diào)用方的當(dāng)前輸入模式。這個(gè)方法僅在調(diào)用方運(yùn)行時(shí)返回當(dāng)前的輸入模式,否則它返回nil。
Runloop模式:
1.NSDefaultRunLoopMode:默認(rèn)狀態(tài)(空閑狀態(tài)),比如點(diǎn)擊按鈕都是這個(gè)狀態(tài)
2.UITrackingRunLoopMode:滑動(dòng)時(shí)的Mode。比如滑動(dòng)UIScrollView時(shí)。
3.UIInitializationRunLoopMode:私有的,APP啟動(dòng)時(shí)。就是從iphone桌面點(diǎn)擊APP的圖標(biāo)進(jìn)入APP到第一個(gè)界面展示之前,在第一個(gè)界面顯示出來后,UIInitializationRunLoopMode就被切換成了NSDefaultRunLoopMode。
4.NSRunLoopCommonModes:它是NSDefaultRunLoopMode和UITrackingRunLoopMode的集合。結(jié)構(gòu)類似于一個(gè)數(shù)組。在這個(gè)mode下執(zhí)行其實(shí)就是兩個(gè)mode都能執(zhí)行而已。
NSRunLoop常用函數(shù)
- (CFRunLoopRef)getCFRunLoop CF_RETURNS_NOT_RETAINED;
函數(shù)描述:返回調(diào)用方的基礎(chǔ)CFRunLoop對(duì)象??梢允褂梅祷氐倪\(yùn)行循環(huán)來使用Core Foundation函數(shù)調(diào)用配置當(dāng)前運(yùn)行循環(huán)。例如可以使用此函數(shù)來設(shè)置運(yùn)行循環(huán)觀察者。
返回值 :調(diào)用方的基礎(chǔ)CFRunLoop對(duì)象。
- (void)addTimer:(NSTimer *)timer forMode:(NSRunLoopMode)mode;
函數(shù)描述:使用給定的輸入模式注冊(cè)給定的計(jì)時(shí)器。可以將計(jì)時(shí)器添加到多種輸入模式中。在指定模式下運(yùn)行時(shí),調(diào)用方會(huì)使計(jì)時(shí)器在其計(jì)劃的啟動(dòng)日期當(dāng)天或之后啟動(dòng)。觸發(fā)后,計(jì)時(shí)器調(diào)用其關(guān)聯(lián)的處理程序例程,該例程是指定對(duì)象上的選擇器。調(diào)用方保留計(jì)時(shí)器。要從安裝計(jì)時(shí)器的所有運(yùn)行循環(huán)模式中刪除計(jì)時(shí)器,需要向計(jì)時(shí)器發(fā)送invalidate消息。
參數(shù) :
timer :要向調(diào)用方注冊(cè)的計(jì)時(shí)器。
mode :添加計(jì)時(shí)器的模式。
以上就是Objective-C計(jì)時(shí)器NSTimer學(xué)習(xí)筆記的詳細(xì)內(nèi)容,更多關(guān)于Objective-C計(jì)時(shí)器NSTimer的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
iOS實(shí)現(xiàn)屏幕亮度和閃光燈控制的實(shí)例代碼
本篇文章主要介紹了iOS實(shí)現(xiàn)屏幕亮度和閃光燈控制的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-06-06iOS應(yīng)用開發(fā)中運(yùn)用設(shè)計(jì)模式中的組合模式的實(shí)例解析
這篇文章主要介紹了iOS應(yīng)用開發(fā)中運(yùn)用設(shè)計(jì)模式中的組合模式的實(shí)例解析,示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下2016-03-03快速解決ios微信下audio無法自動(dòng)播放的問題
下面小編就為大家分享一篇快速解決ios微信下audio無法自動(dòng)播放的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-03-03iOS利用UIBezierPath + CAAnimation實(shí)現(xiàn)路徑動(dòng)畫效果
在iOS開發(fā)中,制作動(dòng)畫效果是最讓開發(fā)者享受的環(huán)節(jié)之一,這篇文章主要給大家介紹了關(guān)于iOS利用UIBezierPath + CAAnimation實(shí)現(xiàn)路徑動(dòng)畫效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10iOS實(shí)現(xiàn)時(shí)間顯示幾分鐘前,幾小時(shí)前以及剛剛的方法示例
這篇文章主要介紹了如何利用iOS實(shí)現(xiàn)時(shí)間顯示是在幾小時(shí)前,幾分鐘前以及剛剛的格式,類似大家在qq空間和朋友圈微博看到的效果,文中給出了詳細(xì)的示例代碼,有需要的朋友們可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-01-01蘋果公司推出的新編程語言Swift簡(jiǎn)介和入門教程
這篇文章主要介紹了蘋果公司推出的新編程語言Swift簡(jiǎn)介和入門教程,Swift是蘋果于WWDC 2014.6.3發(fā)布的編程語言,主要用來替代Objective-C,需要的朋友可以參考下2014-06-06