Если вы нацелены на 10,5+, вам стоит взглянуть на NSOperation. Это должно позволить вам создать общее решение для одной загрузки, а затем использовать встроенные средства очереди для управления зависимостями, если вам требуется, чтобы определенные операции заканчивали загрузку до того, как начнутся другие.
Имейте в виду, что эти API часто ожидают, что задействованные методы делегатов будут выполняться в главном потоке, поэтому вам необходимо убедиться, что это происходит, если вы работаете с асинхронными API, которые работают через методы делегатов. (Вы можете сделать это довольно просто, используя executeSelectorOnMainThread: и друзей)