Move some of these functions to your data model.
It's hard to say how you should manage this, given the limited information you provided, but you need to wonder if one view controller really needs to control the map view and track the location and manage the HTTP connection and manage the selection of master data. Why not move some of them to your model, where it would be easier to split into modules?
Say my CLLocationManager receives a location update, how do I do I suggest the viewController make changes to the user interface? Should I use NSNotificationCenter will send a notification and then add an observer to the view controller?
Notification will be a good solution - it provides a way for the part of your program that manages the location (again, it probably belongs to the model) to report the change without meaning anything, in particular the parts of the program that takes care of the changes in location. It also allows one-to-many communication - if you have another view controller that also takes care of location, it can watch the same notification.
Or is the best way to simply allow viewController to implement all the delegate methods as it is now?
I try to think about sharing responsibilities accordingly more than limiting code size. If you have a class that does one job, but it takes a lot of code, this is great. If you have one class that manages many unrelated things, this is not so good. The problem is that many jobs seem to fall into the traditional "content management" role of the view controller. Try to separate the task of managing the presentation of the data (which is the legitimate task of the view controller) from the management of the data itself (which is the model task).
Caleb source share