I am trying modeling run loop in a simple project. Could you post the source code of RunLoop?
If you are talking about CFRunLoop
, that is part of CoreFoundation and open source: https://opensource.apple.com/source/CF/CF-635/CFRunLoop.c.auto.html
UIKit is a main thread only API unless explicitly stated otherwise because most parts in UIKit would need to be synchronized explicitly with each other and that would cause a lot of locking, which in the end would be a bigger hit on performance than having everything on the main thread. The biggest part here probably is UIKit's view graph. The whole view hierarchy is a graph that needs to be kept in sync. So every time a layout pass happens or a view is added or removed from that graph, that would need to be synchronized with all participating threads.