1. 程式人生 > >iOS -- GCD之延遲與定時器

iOS -- GCD之延遲與定時器

我們開發常用的定時器有三種:NSTimer,CADisplyLink,CGD
本文詳細說一下CGD的延遲與定時器方法。文章最後,也會說說GCD與前兩個的區別。
直接上程式碼,首先是延遲的程式碼:
這裡寫圖片描述
其中的delayInSeconds就是延遲的時間,執行之後,輸出臺會在2s之後,列印11111111.
延遲的程式碼還算固定,但是GCD的定時器,新手上手會有一坑。我先上程式碼:
這裡寫圖片描述
我最開始,按照網上說的程式碼,是沒有將dispatch_source_t定義成屬性,導致了我的handler程式碼塊裡的程式碼沒有執行,因為timer物件被提前釋放了,所以要給timer物件持有住,就沒問題了。
我上一下最後輸出臺的程式碼
這裡寫圖片描述


到這裡就完成了。最後我說一下GCD與NSTimer,CADisplayLink的區別:
1.GCD是獨立於RunLoop的,也就是不用管子執行緒的RunLoop,而NSTimer就要去做管理。
2.GCD可以將時間間隔定到納秒。 可用於需要精確定時的地方。
3.GCD在記憶體的管理上也比NSTimer省心,因為NSTimer容易造成記憶體洩露。