1.OCå
å管ç-runloop
OCå å管ç-runloop
influxdb 源码分析 RunLoop æ¯éè¿å é¨ç»´æ¤ç äºä»¶å¾ªç¯( Event Loop )æ¥å¯¹ äºä»¶/æ¶æ¯è¿è¡ç®¡ççä¸ä¸ªå¯¹è±¡ãinfluxdb 源码分析runloop çå®æ¹ææ¡£å¨ thread ç¯ç« Run Loops ï¼ä¹å°±ä»ä¾§é¢è¯´æäº runloop æ¯ä¸çº¿ç¨æ¯æ¯ç¸å ³çã
influxdb 源码分析å®æ¹æå¦ä¸ä¸å¼ å¾ï¼
influxdb 源码分析线ç¨çè¾å ¥æº:
influxdb 源码分析线ç¨é对è¾å ¥æºçå¤çæºå¶ï¼
influxdb 源码分析æ以ä¸æ¡ä¾ï¼
influxdb 源码分析timer ä¸ performSelector 对åºçåè°é½æ¯ __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ï¼
influxdb 源码分析block å¯¹åº __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ï¼
influxdb 源码分析主线ç¨å¯¹åº __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ :
influxdb 源码分析ç³»ç»è§¦æ¸äºä»¶å¯¹åº __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ ï¼
influxdb 源码分析éç¥äºä»¶å¯¹åº __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ ï¼
influxdb 源码分析å°ç»ï¼
influxdb 源码分析æ»å¨é¡µé¢è¾åºï¼
influxdb 源码分析页é¢æ»å¨è¿ç¨ä¸å¤äº UITrackingRunLoopMode ï¼éæ¢ç¶æå¤äº kCFRunLoopDefaultMode ã
influxdb 源码分析è¾åºï¼
influxdb 源码分析è¾åºï¼
influxdb 源码分析æ¢ç¶ runloop æ¯ä¸ä¸ªäºä»¶å¾ªç¯ï¼é£ä¹å®ä¸æ®éç循ç¯æä»ä¹åºå«å¢ï¼
influxdb 源码分析æ®é循ç¯ï¼
influxdb 源码分析runloop 循ç¯ï¼
influxdb 源码分析é£ä¹å¯ä»¥å¾å°ä»¥ä¸ç»è®ºï¼
influxdb 源码分析é£ä¹ runloop æ¯æä¹åå°çå¢ï¼
influxdb 源码分析é常æ们ä¼éè¿ NSRunLoop å»è·åå½åç runloop ï¼
influxdb 源码分析å®ä¹å¦ä¸ï¼
influxdb 源码分析ç» currentRunLoop ä¸ç¬¦å·æç¹ï¼
influxdb 源码分析éè¿ä¹åçåæå·²ç»å®ä½å°äº runloop æ¯å¨ CoreFoundation ä¸ç CoreFoundationæºç ãæ£å¥½ CoreFoundation å¼æºäº CFRunLoop ï¼
influxdb 源码分析é£ä¹æ ¸å¿é»è¾å°±å¨ CFRunLoopRunSpecific ä¸ãè¿æä¸ä¸ªçé®æ¯ runloop å¯ä»¥ä¼ç ï¼é£ä¹å®æ¯å¦ä½å®ç°çå¢ï¼
influxdb 源码分析è¦äºè§£ runloop çå®ç°åçï¼é¦å è¦æ¸ æ¥å®çæ°æ®ç»æã
influxdb 源码分析CFRunLoopRunSpecific ç第ä¸ä¸ªåæ°æ¯ CFRunLoopGetCurrent() ï¼
influxdb 源码分析_CFRunLoopGet0
influxdb 源码分析CFRunLoopRef çå®ä¹å¦ä¸ï¼
influxdb 源码分析å®é ä¸åºå±å®æ¯ __CFRunLoop ç±»åï¼
influxdb 源码分析å¯¹äº timer èè¨:
influxdb 源码分析æ¾ç¶å®æ¯è¦ä¾èµ mode çã
influxdb 源码分析CFRunLoopMode
influxdb 源码分析èä¸ä¸ª mode ä¸å对åºå¤ä¸ª items(source0ãsource1ãtimersãobservers) ï¼æ以就æå¦ä¸å ³ç³»ï¼
influxdb 源码分析æ¢ç¶æå¤ç§ mode ï¼é£ä¹é½æåªäºå¢ï¼
influxdb 源码分析æºç ä¸æå¦ä¸å®ä¹ï¼
influxdb 源码分析å®ä»¬å¯¹åº Foundation ä¸çï¼
influxdb 源码分析æ们é½æ¸ æ¥å¨é¡µé¢æ»å¨çæ¶åæä¸ä¸ª UITrackingRunLoopMode ï¼
influxdb 源码分析é¤äºä»¥ä¸ 3 ç§ mode è¿æ两个ç§æ mode ï¼
influxdb 源码分析å½ RunLoop è¿è¡å¨ Mode1 ä¸æ¶ï¼æ¯æ æ³æ¥åå¤ç Mode2 æ Mode3 ä¸ç SourceãTimerãObserver äºä»¶çã
influxdb 源码分析以 timer 为ä¾ï¼å° timer å å ¥å° runloop ä¸ï¼
influxdb 源码分析åºå±è°ç¨äº CFRunLoopAddTimer ï¼
influxdb 源码分析æ ¹æ®è¦å å ¥ç mode åºåæ¯ common mode åé common mode å° timer å å ¥ mode ä¸ãè¿ä¸ªæ¶ååªæ¯å° timer å å ¥äº mode ä¸ï¼è¦æ§è¡è¯å®è¦è°ç¨ CFRunLoopRun ï¼æç»è¦è°ç¨ CFRunLoopRunSpecific ã
influxdb 源码分析å¨ __CFRunLoopRun ä¸è°ç¨äº __CFRunLoopDoTimers ï¼
influxdb 源码分析æ¾å° mode ä¸çææ timer ç¶åè°ç¨ __CFRunLoopDoTimer ã
influxdb 源码分析CFRunLoopAddTimer -> CFRunLoopRunSpecific -> __CFRunLoopRun -> __CFRunLoopDoTimers -> __CFRunLoopDoTimer -> __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ ã
influxdb 源码分析ä¸ timer ç¸å source ä¼è°ç¨ CFRunLoopAddSource ï¼
influxdb 源码分析CFRunLoopAddSource -> CFRunLoopRunSpecific -> __CFRunLoopRun -> __CFRunLoopDoSources0/__CFRunLoopDoSources1 -> __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ /__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__
influxdb 源码分析åç observer ä¼è°ç¨ CFRunLoopAddObserver ã
influxdb 源码分析influxdb 源码分析