https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html#//apple_ref/doc/uid/10000057i-CH16-SW3
A), Run Loops
1, Run Loop Modes
a), Default (NSDefaultRunLoopMode | kCFRunLoopDefaultMode)
b), Connection (NSConnectionReplyMode)
c), Modal (NSModalPanelRunLoopMode)
d), Event tracking (NSEventTrackingRunLoopMode)
e), Common modes (NSRunLoopCommonModes | kCFRunLoopCommonModes)
2, Input Sources(异步事件)
a), Port-Based Sources (CFMachPortRef, CFMessagePortRef, or CFSocketRef)
b), Custom Input Sources ( CFRunLoopSourceRef)
c), Cocoa Perform Selector Sources (performSelectorOnMainThread:withObject:waitUntilDone: 等方法)
3, Timer Sources(同步事件)
4, Run Loop Observers(同步事件)
5, The Run Loop Sequence of Events
B), When Would You Use a Run Loop?
The only time you need to run a run loop explicitly is when you create secondary threads for your application.