For handling asynchronous request there is a very neat and simple mechanism in Objective-C.
The following header file defines a protocol for the delegate and the necessary methods and data types to create a downloader that constantly pushes an update about the download state to the main thread.
This implementation is ment for big files like 200 MB zip files. If you just want to download small stuff like an image u can instead of writing into a file use a NSData object.
Hope this tutorial did help. Feel free to post some code improvements or questions in the comments?
P.S.: Will look for a nicer way to post code in blogger. For the moment I don't have a lot of time (child n.3 was born two days ago... ;o) ) so ill leave it this way.
Here the code as Pastie-link: