Downloading Remote Files Asynchronously

The JavaScript language seemed to transform from “toy language” to “serious language” when all mainstream browsers implemented the XMLHttpRequest object or similar functionality (it began life as an ActiveX control for Internet Explorer). Suddenly browsers could silently (and under more control than before) communicate with a server and update portions of a web page’s content without having to reload or redraw the entire page. Web pages could look more like apps. And thus web apps were truly born. In 2005, Jesse James Garrett described the activity with this object as Asynchronous JavaScript and XML, or Ajax.

Background communication for standalone applications is nothing new, and iOS provides a class that performs the work for which you’ve been using Ajax on the Web. Some of the concepts are the same, but the iOS version is heavily reliant on the delegate pattern, which makes it easy to grasp (IMHO). Although the XMLHttpRequest object automatically accumulates data into a buffer, you have to manage that accumulation in your iOS code. But it’s a pretty easy task to take care of and shouldn’t cause you any headaches.

You will gain one enormous freedom over Ajax on the Web: there are no same-origin security restrictions on you. If you have a publicly accessible URL, your app can download the data and manipulate it to your heart’s content.

It’s likely a waste of time to compare fine points between the two systems, because so many web authors use ...

Get Learning the iOS 4 SDK for JavaScript Programmers now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.