NSRunLoop概述和原理

2021-05-28 00:24:30 字數 1039 閱讀 4070

**:

1.什麼是nsrunloop?

我們會經常看到這樣的**:

1

2

3

4

5

6

7

8

9

10

-(ibaction

)start

:(id

)sender

[progress sethidden

:yes];

} 2. nsrunloop工作原理

接下來看一下nsrunloop具體的工作原理,首先是官方文件提供的說法,看圖:

通過所有的「訊息」都被新增到了nsrunloop中去,而在這裡這些訊息並分為「input source」和「timer source」 並在迴圈中檢查是不是有事件需要發生,如果需要那麼就呼叫相應的函式處理。為了更清晰的解釋,我們來對比vc++和ios訊息處理過程。

vc++中在一切初始化都完成之後程式就開始這樣乙個迴圈了(**是從戶sir mfc程式設計課程的slides中擷取):

1

2

3

4

5

6

7

8

9

int apientry winmain

(hinstance hinstance

,hinstance hprevinstance

,lpstr  lpcmdline

,int ncmdshow

)}}1

2

3

4

5

6

7

(...

)... }

現在會過頭來看看剛才的那個會「暫停」**的例子,有沒有更加深入的認識了呢?

NSRunLoop概述和原理

1.什麼是nsrunloop?我們會經常看到這樣的 1 2 3 4 5 6 7 8 9 10 ibaction start id sender progress sethidden yes 2.nsrunloop工作原理 接下來看一下nsrunloop具體的工作原理,首先是官方文件提供的說法,看圖 ...

NSRunLoop 概述和原理

1.什麼是nsrunloop?我們會經常看到這樣的 ibaction start id sender progress sethidden yes 這段 很神奇的,因為他會 暫停 執行,而且程式執行不會因為這裡有乙個while迴圈而受到影響。在 progress sethidden no 執行之後,...

NSRunLoop 概述和原理

ibaction start id sender progress sethidden yes 這段 很神奇的,因為他會 暫停 執行,而且程式執行不會因為這裡有乙個while迴圈而受到影響。在 progress sethidden no 執行之後,整個函式想暫停了一樣停在迴圈裡面,等loadpage...