I'm not familiar with modern Windows async programming techniques, or the PeekMessage function. You should explain what that does in general CS terms.
It sounds like that's a way to respond to system events while you are doing time-consuming tasks.
iOS uses a slightly different approach. It it a multithreaded OS that runs an "event loop" on the main thread. Each time through the event loop, the system checks for events that need to be responded to (touch events, notifications, data coming in on the WiFi or cell network, screen updates, etc.) and handles them.
You need to write your code that runs on the main thread to do short tasks in response to user actions or system events, and then return. You should not do time-consuming tasks on the main thread.
There is a framework called Grand Central Dispatch that provides high level support for running tasks on background threads (or on the main thread, for that matter.) You also have NSOperationQueues, which give you support for managing queues of tasks that are run either concurrently or in parallel, on the main thread or in the background.
The two OS's use a different paradigm for handling events and concurrency, and there is likely no simple "use this function instead" replacement for your current way of doing things.
You should probably refactor your long-running tasks to run on a background thread, and then send messages to the main thread when you want to update the user interface.