I set objects to handle my downloads (and other asynchronous or long tasks) in AppDelegate, and then run them as needed from different controllers. Thus, they belong and have constancy throughout the life of the application.
The best way to do this is to pass them to the viewControllers that they will need (and not the viewController, expecting appDelegate to have such and such an object, ready and waiting) - dependency injection.
- , , , NSNotifications, , . , , viewWillDisappear .., , .