I might try to narrow the focus of the question somewhat; but I'll take a shot at what I think the issues are:
My View Controllers are holding my object properties and iVars etc. They shouldn't hold any at all.
If you're following good MVC principles, then your view controllers should not have properties that would more correctly belong to the model layer. But given that view controllers are the conduit between the model and the view, certain exposed properties on the controller are essential.
Let's say you have a view controller that displays details about an employee - first name, last name, salary, department, etc. You'll probably want a model object that represents the employee. Let's call it MYEmployee
. Next think about what other classes need to know about instances of MYEmployee
. Those are the properties exposed in the class interface.
Now, how will our controller work with an instance of MYEmployee
? Here, the view controller - let's call it MYEmployeeDetailViewController
- needs to know what employee to display, so we need to expose the represented employee in the view controller's interface, e.g.
@property (nonatomic, strong) MYEmployee *employee;
Now MYEmployeeDetailViewController
class users can pass an employee to display.
then how does one use Class Objects with the expectation i outlined?
I think your uncertainties revolve around questions like "who owns what data?" etc. My recommendation is to take a step back and really read the documentation on Apple's take on MVC and tap into some resources on object-oriented design. It always helps me to think first about interfaces (class interfaces, not UI) and less about implementation. Mapping out the relationships between classes before coding also helps.