Understanding the MVC design pattern in Cocoa Touch <p>Usually I just put together an app in any random way, as long as it works, but this means I don't pay any attention to any design patterns. My application currently makes extensive use of global variables (I carry an instance of my <code>AppDelegate</code> in every view controller to access properties I declared in my <code>AppDelegate.h</code>). Although it does what I want it to do, I've read this is not a good design practice. </p> <p>So I want to start making my code "legit". However, I can't imagine my app right now without global variables. They are so important to the well-being of the app, but this must mean I'm doing something wrong, right? I just can't imagine how else I'd do some things. Take for example this:</p> <p><img src="https://i.stack.imgur.com/DlH1e.png" alt="enter image description here"></p> <p>You have two view controllers here, a <code>SideViewController</code> and a <code>MainViewController</code>. Using global variables, such as say if the entire application had one shared instance of <code>SideViewController</code> and <code>MainViewController</code> (<code>appDelegate.sideViewController</code> and <code>appDelegate.mainViewController</code>), I can easily communicate between the two view controllers, so that if I press "News Feed" in my <code>SideViewController</code>, I can tell my <code>MainViewController</code> to reload it's view. </p> <p>I can't imagine, however, how this would be done if these were not global variables? If an event occurs in my <code>SideViewController</code>, how would I notify my <code>MainViewController</code>, in a way that is in accordance with design standards?</p>