NSTimer&NSRunLoop

定時器及運行循環

  • NSRunLoop是iOS消息機制的處理模式
  • NSRunLoop的主要做用:控制NSRunLoop裏面線程的執行和休眠,在有事情作的時候使當前NSRunLoop控制的線程工做,沒有事情作讓當前NSRunLoop的控制的線程休眠。 經過全部的「消息」都被添加到了NSRunLoop中去,而在這裏這些消息並分爲「input source」和「Timer source」 並在循環中檢查是否是有事件須要發生,若是須要那麼就調用相應的函數處理 定時器(NSTimer)

RunLoopMode(運行循環模式)

1.NSDefaultRunLoopMode 這是大多數操做中使用的模式。
2.NSConnectionReplyMode 該模式用來監控NSConnection對象。你一般
不須要在你的代碼中使用該模式。
3.NSModalPanelRunLoopMode Cocoa使用該模式來標識modalpanel(模
態面板)的事件。
4.NSEventTracking(UITrackingRunLoopMode) Cocoa使用該模式來處
理用戶界面相關的事件。
5.NSRunLoopCommonModes 這是一組可配置的通用模式。將input 
sources與該模式關聯則同時也將input sources與該組中的其它模式進行了
關聯。對於Cocoa應用,該模式缺省的包含了default,modal以及event tracking模式。

一個常見的問題就是,主線程中一個NSTimer添加在default mode中, 當界面上有一些scroll view的滾動頻繁發生致使run loop運行在UItraking mode中, 從而這個timer沒能如指望那般的運行。 因此,咱們就能夠把這個timer加到NSRunLoopCommonModes中來解決(iOS中)。 定時器是讓程序定時執行某一個方法:html

定時器(NSTimer)

/*
 * scheduledTimerWithTimeInterval: 間隔時間(秒)
 * target: 所要應用定時器的對象
 * selector: 調用的方法
 * userInfo: 所要傳遞的參數
 * repeats: 是否重複調用
 */
 
[NSTimer scheduledTimerWithTimeInterval:1 
ios

target:self selector:@selector(timerAction:) userInfo:@"參數" repeats:YES];objective-c

 

能夠點擊下列網址詳細瞭解....(可是現階段因爲還有一些知識點是在後面纔講到,沒有一些知識的鋪墊,看這些文章的時候,有些吃力,因此看到有些不理解的時候,暫時不要太鑽)框架

 

iOS開發之關於NSTimer使用函數

 

Foundation框架補充oop

 

NSRunLoop參考資料1spa

 

NSRunLoop參考資料2.net

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息