什麼是最好的睡眠方式/等待,直到發佈特定通知?如何阻止,直到某些通知發佈在可可?
我有異步API從NSNotification
(通知來自可可,我無法避免它)獲取數據的類,我需要單元測試它。
到目前爲止,我已經想通了半忙等待:
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10]]
沒有運行循環的通知的處理都沒有收到。但是,當需要通知時,我怎麼能立即從運行循環中斷開?
什麼是最好的睡眠方式/等待,直到發佈特定通知?如何阻止,直到某些通知發佈在可可?
我有異步API從NSNotification
(通知來自可可,我無法避免它)獲取數據的類,我需要單元測試它。
到目前爲止,我已經想通了半忙等待:
[[NSRunLoop mainRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:10]]
沒有運行循環的通知的處理都沒有收到。但是,當需要通知時,我怎麼能立即從運行循環中斷開?
runMode:beforeDate:只會運行一次循環,因此您可以在循環中使用該調用,直到你檢測到通知已經被處理(如果沒有其他的事情,你的處理程序可以將你的測試類中的成員變量翻轉爲YES)。
如果這只是單元測試你的代碼對通知的反應,我認爲讓線程進入休眠狀態可能會過度。有幾個問題想起...
如果您確實需要創建一個多線程場景來測試例如,您可以在this unit test code中查看testLockUnlock
。 (我只是想確保我的代碼正確地使用內置到集合或通用可變對象中的鎖。)
類似的問題在這裏:http://stackoverflow.com/questions/1557070/how-to-pause-an-nsthread-until-notified – paulmelnikow 2012-09-27 14:45:40