2009-12-07 13 views

回答

5

我們通常不會在生產中使用NSRunLoop來等待變量發生變化。可以使用回調。

然而,在單元測試代碼我們有以下幾點:

NSDate *twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0]; 
    while (!callBackInvoked && !errorHasOccured && runCount-- && [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:twoSecondsFromNow]) { 
     twoSecondsFromNow = [NSDate dateWithTimeIntervalSinceNow:2.0]; 
    } 

代碼等待,直到我們的回調被調用時,發生錯誤,或者我們已經等待已發生2周第二段時間數。我們使用它來測試進行回調的代表。

正如我所說我不會在生產代碼中這樣做。

1

你通常不會在你的代碼直接使用NSRunLoop

你會例如創建GUI應用程序,它已經在它NSRunLoop(在Xcode使用預定義的應用程序代碼模板)。

它取決於應該改變的變量,你可能會把它放在'Model'對象的某個位置,甚至會有一些變化,比如數據到達在線,或者鏈接到GUI對象和用戶執行的動作。

  • 如果是按鈕,您將設置 處理程序來調用操作。
  • 如果它是可變的,您可以設置 KVC/KVO來檢測變化並呼叫 處理程序。

等等,Cocoa將爲您處理膠水代碼,您只需要設置適當的處理來執行操作。

您的問題沒有足夠的細節,我建議看看一些基本的tutorial at Apple's site for developers,看看可可有什麼可用的。