2:

Information passing in a proper MVC architecture should be done via a mediator such as an event manager.. The model would have an internal representation of everything that is needed for it to stay independent.. Now when a change occurs the model sends an event via the event manager to the view..

3:

You can also give your view a read-only polygon instance variable (just a pointer to your polygon instance in the controller; read-only because you don't want your view to be able to change the model).

This is not necessarily a violation of MVC principles.. Or if you want a very loose coupling between model and view, try key-value observing: your model dispatches a notification saying "hey my number of sides changed to 8" and your view listens to these notifications and redraws itself as needed.. Another option is to give your view a delegate (= your controller) and then call something like [delegate numberOfSidesToDraw] from within the view class.. All three methods have pros and cons..

4:

I understand.

My controller has an IBOutlet to the view and the polygon.. I forgot to mention that I'm using CG and drawrect to draw the polygon.. What I would like to do, and what I should do if I understand it correctly, is from the controller pass the numberOfSides to the view, asking it to draw with this number of sides.

Like:. [view drawPolygon:myPolygon.numberOfSides];. But what I have to do, because drawrect gets called automatically, is make some instance variable of the view available to contain the numberOfSides, which the controller would set.

And then call [view setNeedsDisplay];. Does this make sense? Since the view cannot access the myPolygon directly.