NSTimer與NSRunLoop的關係分析

2021-06-18 22:56:13 字數 784 閱讀 9011

發表於2013 年 6 月 27 日

由bluev

| 416 次瀏覽

最近關於

nstimer

和nsrunloop

**執行效果如下圖所示:

本示例演示了四個定時器的效果以及介面操作對它們的影響。

前兩個定時器,是在子執行緒中啟動的:

- (void)subthread1

}- (void)subthread2

}下面比較第三,四兩個定時器的效果:

- (void)startdefaultruntimer

- (void)startcommonruntimer

從開始執行,這兩個定時器沒有什麼不同之處。但是當我把手指按在下面左側的滾動條上上下拖動滾動檢視時,這時為了更清楚一看到區別,手指不要離開螢幕。能看到第三個標籤數字停止變化,即定時器方法暫停執行了,鬆開手指後,數字繼續變化。

兩個定時器的區別在於這句話:[[nsrunloop currentrunloop] addtimer:self.commonruntimer formode:nsrunloopcommonmodes];

因為runloop預設的執行模式是:nsdefaultrunloopmode。在ios系統下,為了提高介面的響應速度,在用於對螢幕進行操作時,會暫停一些運算,尤其是涉及到滾動檢視這種需要流暢響應的檢視。

用手拖動右側滾動試圖沒有影響,因為它不會上下滾動。

所以我們顯示地把這個定時器加到nsrunloopcommonmodes執行模式下,就會忽略介面操作的影響,可以不受介面操作的干擾,正常執行非同步方法了。

NSTimer與iphone的簡單動畫

使用使用nstimer與iphone的簡單動畫,實現飄雪效果,這理原理比較簡單,就是定時生成一定的雪花,然後使用動畫的方式向下漂落 我在其它論壇,看到使用path的方式實現的乙個雲漂來漂去的效果,實際也可以用那種方式實現,這實際就是前面說的動畫效果的兩種應用 所以,我們可以在viewdidload事...

NSTimer和CADisplayLink的用法

nstimer初始化器接受呼叫方法邏輯之間的間隔作為它的其中乙個引數,預設一秒執行30次。cadisplaylink預設每秒執行60次,通過它的frameinterval屬性改變每秒執行幀數,如設定為2,意味cadisplaylink每隔一幀執行一次,有效的邏輯每秒執行30次。此外,nstimer接...

NSTimer和CADisplayLink的用法

nstimer初始化器接受呼叫方法邏輯之間的間隔作為它的其中乙個引數,預設一秒執行30次。cadisplaylink預設每秒執行60次,通過它的frameinterval屬性改變每秒執行幀數,如設定為2,意味cadisplaylink每隔一幀執行一次,有效的邏輯每秒執行30次。此外,nstimer接...