title: Objective-C Alternative to using ApplicationDelegate or singleton to pass data
body: <p>I'm working on an exiting iOS app (called Mazin in the App store, if anyone is interested) and I'm trying to rework the code to avoid using the Application Delegate or a singleton for sharing information/methods.  In particular I have the following to share across certain views and controllers:</p>
  
  <ul>
  <li>CoreData objects like NSManagedObjectConttext and related custom methods for interacting with the data</li>
  <li>State properties used in several places like currentMazeType, gameMode, and soundIsMuted along with a few widely used utility methods particular to the game</li>
  <li>Views and methods used to display information used commonly throughout the app (e.g., an ActivityIndicator and methods to show/hide it on a given view)</li>
  </ul>
  
  <p>In general, several views and ViewControllers need access to various subsets of this information and I need a mechanism to share the information and methods "globally" across these objects.  Some of this sharing is for convenience (e.g., every time I want to display a basic activity indicator, I just  call a common "startActivityIndicator" method) but some are required (e.g., changing gameMode changes it "globally" and several views/controllers need to access the common mode info).</p>
  
  <p>What sort of patterns would work best for this requirement?  I have my own solution in mind, and I'll post it below for your consideration/comments.</p>
  
  <p>Thanks!</p>