I've solved this issue by implementing NSURLConnection. Because the data is downloaded asynchronously, I also implemented CFRunLoop on the connection and on connectionDidFinishLoading to run the method after it receives all data from the connection.
Hope this helps someone out there!