第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用NSTimer?

如何使用NSTimer?

iOS
慕勒3428872 2019-06-06 16:13:43
如何使用NSTimer?如何使用NSTimer?有人能給我一步的指示嗎?
查看完整描述

3 回答

?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗(yàn) 獲得超4個(gè)贊

首先,我想提請(qǐng)您注意Cocoa/CF文檔(這始終是一個(gè)偉大的第一端口)。Apple文檔在每篇參考文章的頂部都有一個(gè)叫做“Companion Guides”的部分,其中列出了文檔主題的指南(如果有的話(huà))。例如,用NSTimer文獻(xiàn)列出兩個(gè)配套指南:

對(duì)于您的情況,Timer編程主題的文章可能是最有用的,而線程主題是相關(guān)的,但不是最直接與所記錄的類(lèi)相關(guān)的。如果您查看Timer編程主題文章,它分為兩部分:

  • 定時(shí)器
  • 使用計(jì)時(shí)器

對(duì)于采用這種格式的文章,通常會(huì)概述類(lèi)及其用途,然后介紹一些示例代碼多么,怎樣若要使用它,請(qǐng)?jiān)诒纠械摹笆褂糜?jì)時(shí)器”部分中使用。有關(guān)于“創(chuàng)建和調(diào)度計(jì)時(shí)器”、“停止計(jì)時(shí)器”和“內(nèi)存管理”的部分。從本文中,可以創(chuàng)建一個(gè)計(jì)劃好的、不重復(fù)的計(jì)時(shí)器,如下所示:

[NSTimer scheduledTimerWithTimeInterval:2.0
    target:self
    selector:@selector(targetMethod:)
    userInfo:nil
    repeats:NO];

這將創(chuàng)建一個(gè)在2.0秒后觸發(fā)并調(diào)用的計(jì)時(shí)器targetMethod:在……上面self使用一個(gè)參數(shù),該參數(shù)是指向NSTimer舉個(gè)例子。

如果您想更詳細(xì)地查看該方法,您可以參考文檔獲得更多信息,但是代碼也有解釋。

如果要停止重復(fù)的計(jì)時(shí)器(或在不重復(fù)計(jì)時(shí)器觸發(fā)前停止它),則需要保留指向NSTimer實(shí)例;這通常需要是一個(gè)實(shí)例變量,以便您可以在另一個(gè)方法中引用它。然后你可以打電話(huà)給invalidateNSTimer例如:

[myTimer invalidate];myTimer = nil;

這也是很好的做法nil退出實(shí)例變量(例如,如果使計(jì)時(shí)器無(wú)效的方法被多次調(diào)用,而實(shí)例變量尚未設(shè)置為nilNSTimer實(shí)例已被解除分配,它將引發(fā)異常)。

還請(qǐng)注意本文末尾關(guān)于內(nèi)存管理的要點(diǎn):

因?yàn)镽un循環(huán)從內(nèi)存管理的角度來(lái)維護(hù)計(jì)時(shí)器。通常情況下,在調(diào)度計(jì)時(shí)器之后,不需要保留對(duì)它的引用..由于計(jì)時(shí)器在將其方法指定為選擇器時(shí)作為參數(shù)傳遞,在適當(dāng)?shù)那闆r下,可以在該方法中使重復(fù)計(jì)時(shí)器失效。..然而,在許多情況下,您還想要使計(jì)時(shí)器無(wú)效的選項(xiàng)-甚至在計(jì)時(shí)器開(kāi)始之前。在這種情況下,您確實(shí)需要保持對(duì)計(jì)時(shí)器的引用,以便在適當(dāng)?shù)臅r(shí)候發(fā)送一條無(wú)效消息。..如果您創(chuàng)建了一個(gè)非計(jì)劃計(jì)時(shí)器(請(qǐng)參閱“非計(jì)劃計(jì)時(shí)器”),那么您必須維護(hù)對(duì)計(jì)時(shí)器的強(qiáng)烈引用(在引用計(jì)數(shù)環(huán)境中,您保留它),以便在使用它之前不會(huì)將它釋放。


查看完整回答
反對(duì) 回復(fù) 2019-06-06
?
蝴蝶不菲

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊

有幾種使用計(jì)時(shí)器的方法:

1) 計(jì)劃計(jì)時(shí)器&使用選擇器

NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 2.0
                      target: self
                      selector:@selector(onTick:)
                      userInfo: nil repeats:NO];
  • 如果將重復(fù)設(shè)置為“否”,則計(jì)時(shí)器將在運(yùn)行選擇器之前等待2秒,然后停止運(yùn)行;
  • 如果重復(fù):是的,計(jì)時(shí)器將立即啟動(dòng),并將重復(fù)調(diào)用選擇器每2秒;
  • 若要停止計(jì)時(shí)器,請(qǐng)調(diào)用計(jì)時(shí)器的-無(wú)效方法:[t無(wú)效];

另外,您可以使用以下簡(jiǎn)單語(yǔ)句,而不是使用不重復(fù)的計(jì)時(shí)器,而是在指定的間隔之后調(diào)用選擇器:

[self performSelector:@selector(onTick:) withObject:nil afterDelay:2.0];

這將具有與上面的示例代碼相同的效果;但是如果您想每隔第九次調(diào)用選擇器,則使用帶有重復(fù)的定時(shí)器:是的;

2) 自定時(shí)器

NSDate *d = [NSDate dateWithTimeIntervalSinceNow: 60.0];NSTimer *t = [[NSTimer alloc] initWithFireDate: d
                              interval: 1
                              target: self
                              selector:@selector(onTick:)
                              userInfo:nil repeats:YES];NSRunLoop *runner = [NSRunLoop currentRunLoop];
                              [runner addTimer:t forMode: NSDefaultRunLoopMode];[t release];
  • 這將創(chuàng)建一個(gè)定時(shí)器,該定時(shí)器將在您指定的自定義日期(在本例中為一分鐘后)啟動(dòng),并且每隔一秒重復(fù)一次。



3) 計(jì)劃外計(jì)時(shí)器&使用調(diào)用

NSMethodSignature *sgn = [self methodSignatureForSelector:@selector(onTick:)];NSInvocation *inv = [NSInvocation invocationWithMethodSignature:
 sgn];[inv setTarget: self];[inv setSelector:@selector(onTick:)];NSTimer *t = [NSTimer timerWithTimeInterval: 1.0
                      invocation:inv 
                      repeats:YES];

在此之后,您可以在需要時(shí)手動(dòng)啟動(dòng)計(jì)時(shí)器,如下所示:

NSRunLoop *runner = [NSRunLoop currentRunLoop];[runner addTimer: t forMode: NSDefaultRunLoopMode];



作為注釋?zhuān)琽nTick:Method如下所示:

-(void)onTick:(NSTimer *)timer {
   //do smth}


查看完整回答
反對(duì) 回復(fù) 2019-06-06
?
慕后森

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊

就像這樣:

NSTimer *timer;

    timer = [NSTimer scheduledTimerWithTimeInterval: 0.5
                     target: self
                     selector: @selector(handleTimer:)
                     userInfo: nil
                     repeats: YES];


查看完整回答
反對(duì) 回復(fù) 2019-06-06
  • 3 回答
  • 0 關(guān)注
  • 514 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)