一、__CFRunLoopRun源码简略如下:
static int32_t __CFRunLoopRun(CFRunLoopRef rl, CFRunLoopModeRef rlm, CFTimeInterval seconds, Boolean stopAfterHandle, CFRunLoopModeRef previousMode) {
int32_t retVal = 0;//默认值
do {
/** 此处为处理:source、observer、timer、block的逻辑 ***/
} while (0 == retVal);
return retVal;
}
二、结论如下:
当runloop运行起来时,至少做一次source、observer、timer、block的检查、执行--换句话说:runloop至少执行一次。
当下网络上流行说法:当runloop中未注册source、observer、timer、block时,runloop运行起来直接退出。
因此此流行说法是不正确的!!!。