title: Global Variables in Cocoa/Objective-C?
body: <p>According to <em>Cocoa Programming for Mac OS X, 3rd Edition,</em> on page 202 (chapter 13):</p>
  
  <blockquote>
    <p>You will be registering, reading, and
    setting defaults in several classes in
    your application. To make sure that
    you always use the same name, you
    should declare those strings in a
    single file and then simply #import
    that file into any file in which you
    use the names.  There are several ways
    to do this. For example, you could use
    the C preprocessor’s #define command,
    but most Cocoa programmers use global
    variables for this purpose.</p>
  </blockquote>
  
  <p>Is this really the correct best practice? Global variables? That seems insane to me – counter to everything I’ve ever been taught.</p>
  
  <p>Would a better design be a simple Singleton class with these defined? Or is it really the correct best practice to go global? Is there a better pattern than either, given that many people consider Singletons to be globals in a pretty dress?</p>