Swift 使用計時器含代碼

Swift 使用計時器

在Swift中,計時器用于創(chuàng)建重復(fù)任務(wù)以安排延遲工作。愛掏網(wǎng) - it200.com它是一個類,以前被稱為NSTimer。愛掏網(wǎng) - it200.comSwift的計時器類提供了一種靈活的方式來安排將來要發(fā)生一次或多次的工作。愛掏網(wǎng) - it200.com

讓我們看看如何使用運行循環(huán)來創(chuàng)建重復(fù)和非重復(fù)計時器,如何跟蹤計時器,并且如何減少它們的能量和功耗。愛掏網(wǎng) - it200.com

我們可以使用以下語法創(chuàng)建和啟動一個重復(fù)計數(shù)器:

語法

let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fireTimer), userInfo: nil, repeats: true)

讓我們看一個示例來演示如何創(chuàng)建一個重復(fù)計數(shù)器:

示例

let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire), userInfo: nil, repeats: true)
@objc func fire() 
{
    print("FIRE!!!")
}

在上面的示例中,

  • 使用 Timer.scheduledTimer(…) 類方法創(chuàng)建了一個定時器。愛掏網(wǎng) - it200.com該方法的返回值賦給常量timer。愛掏網(wǎng) - it200.com現(xiàn)在,這個常量包含一個對定時器的引用,稍后將會用到。愛掏網(wǎng) - it200.com
  • scheduledTimer()的參數(shù)是間隔為1秒的定時器。愛掏網(wǎng) - it200.com它使用了一種稱為目標(biāo)-動作(target-action)的機制,一些設(shè)置為nil的userInfo,以及參數(shù)repeats設(shè)置為true。愛掏網(wǎng) - it200.com
  • 我們還編寫了一個名為fire()的函數(shù)。愛掏網(wǎng) - it200.com這個函數(shù)在定時器觸發(fā)時調(diào)用,大約每秒一次。愛掏網(wǎng) - it200.com通過將target設(shè)置為self,selector設(shè)置為#selector(fire),你指示每當(dāng)定時器觸發(fā)時,需要調(diào)用self的fire()函數(shù)。愛掏網(wǎng) - it200.com

參數(shù)解釋

在這個示例中,使用了5個參數(shù)來創(chuàng)建定時器。愛掏網(wǎng) - it200.com

  • timeInterval: 它指定了定時器觸發(fā)之間的間隔,單位為秒,類型為Double。愛掏網(wǎng) - it200.com
  • target: 它指定了應(yīng)該在其上調(diào)用選擇器函數(shù)的類實例。愛掏網(wǎng) - it200.com
  • selector: 它指定了定時器觸發(fā)時要調(diào)用的函數(shù),使用了#selector(…)。愛掏網(wǎng) - it200.com
  • userInfo: 它指定了一個包含要提供給選擇器的數(shù)據(jù)的字典,或者為nil。愛掏網(wǎng) - it200.com
  • repeats: 它指定了該定時器是重復(fù)還是非重復(fù)。愛掏網(wǎng) - it200.com

創(chuàng)建一個非重復(fù)的定時器

要創(chuàng)建一個非重復(fù)的定時器,只需將 repeats 參數(shù)設(shè)置為 false愛掏網(wǎng) - it200.com定時器只會觸發(fā)一次,并在觸發(fā)后立即使自身失效。愛掏網(wǎng) - it200.com

示例

let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(fire), userInfo: nil, repeats: false)
@objc func fire() 
{
    print("FIRE!!!")
}

注意:上述代碼必須在類上下文中運行,例如在視圖控制器類中。愛掏網(wǎng) - it200.comfire()函數(shù)是類的一部分,self指的是當(dāng)前類實例。愛掏網(wǎng) - it200.com

使用閉包創(chuàng)建一個計時器

let timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true, block: { timer in
    print("FIRE!!!")
})

在上面的代碼中,最后一個參數(shù)塊接受一個閉包。愛掏網(wǎng) - it200.com閉包有一個參數(shù)是計時器本身。愛掏網(wǎng) - it200.com

在這里,使用@objc屬性是因為它使得fire()函數(shù)在Objective-C中可用。愛掏網(wǎng) - it200.com計時器類是Objective-C運行時的一部分,這就是我們使用@objc屬性的原因。愛掏網(wǎng) - it200.com

重復(fù)和非重復(fù)計時器之間的區(qū)別

在創(chuàng)建計時器時,必須指定計時器是重復(fù)還是非重復(fù)。愛掏網(wǎng) - it200.com重復(fù)和非重復(fù)計時器之間的主要區(qū)別是:

非重復(fù)計時器 只會觸發(fā)一次,然后自動使自身無效,因此防止計時器再次觸發(fā)。愛掏網(wǎng) - it200.com

重復(fù)計時器 會觸發(fā)并在同一次運行循環(huán)上重新調(diào)度自己。愛掏網(wǎng) - it200.com重復(fù)計時器總是根據(jù)預(yù)定的觸發(fā)時間進行調(diào)度,而不是實際的觸發(fā)時間。愛掏網(wǎng) - it200.com

例如,如果一個計時器被預(yù)定在特定的時間觸發(fā),并且之后每10秒一次,即使實際觸發(fā)時間延遲,預(yù)定的觸發(fā)時間仍然會落在原始的10秒間隔上。愛掏網(wǎng) - it200.com

聲明:所有內(nèi)容來自互聯(lián)網(wǎng)搜索結(jié)果,不保證100%準(zhǔn)確性,僅供參考。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。
發(fā)表評論
更多 網(wǎng)友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 久久青草免费91观看| 国产日产精品_国产精品毛片| 午夜剧场免费体验| 中文字幕亚洲精品无码| 韩国午夜情深深免费| 最近中文字幕2019视频1| 国产精品va欧美精品| 亚洲伊人久久大香线蕉结合| 1000部国产成人免费视频| 欧美日韩在线影院| 国产精品真实对白精彩久久| 亚洲日韩国产成网在线观看| 91精品国产手机| 欧美性猛交xxxx乱大交| 国产精品久久久久久久久久免费| 亚洲免费小视频| 992tv成人影院| 日本孕妇大胆孕交| 国产va免费精品高清在线观看| 中文字幕成人免费高清在线| 精彩视频一区二区| 好妈妈5高清中字在线观看| 人妻少妇偷人精品视频| 99久久人妻无码精品系列| 欧美日韩国产一区三区| 国产福利91精品一区二区三区| 五月婷婷一区二区| 视频一区二区三区在线观看| 成年人网站免费观看| 免费又黄又爽1000禁片| 999久久久国产精品| 欧美电影《轻佻寡妇》| 国产精品va一区二区三区| 久热这里只有精品视频6| 要灬要灬再深点受不了看| 成人国产经典视频在线观看| 伊人久久大香线蕉久久婷婷| 18精品久久久无码午夜福利| 最近2019中文免费字幕| 国产97人人超碰caoprom| tube8中国69videos|