NSRunloop和線程的關係
NSRunloop屬於一個線程,角色如下:
while (flags)
{
[[NSRunLoop currentRunLoop] runUntilDate:[NSDate distantFuture]];
}
注:當NSRunloop中包含有事件,在沒有事件觸發或超時之前你調用的Run
Loop運行方法不會立刻返回,它會持續監聽其他事件源,Run Loop會讓子線程進入sleep等待狀態;只有當Timer Source或者Input Source事件發生時,子線程纔會被喚醒處理觸發的事件;但Timer source比較特殊,Timer Source事件發生處理後,Run Loop運行方法runUntilDate也不會返回;而其他非Timer事件的觸發處理會讓這個Run
Loop退出並返回YES。當Run Loop運行在一個特定模式時,如果該模式下沒有事件源,Run Loop會立刻返回NO。