title: function parameters not retained using Arc?
body: <p><strong>EDIT</strong>: This is for a static NSMutableDictionary, not a class member. I see a lot of answers thinking it's a class member, sorry about that. Thanks for the quick responses.</p>
  
  <p>I had a working piece of code, but it was used 2x, so I wrote a convenience function:</p>
  
  <pre><code>- (void) initializeDictionary:(NSMutableDictionary*)mutableDict fromPathName:(NSString*)path
  { 
       mutableDict = // get from file, init if not there.
  }
  </code></pre>
  
  <p>Then I noticed nothing was saving. Stepping through the code, the function creates a dictionary, but the "passed in" value is still nil upon returning. This completely blows away my understanding of pointers (don't take this the wrong way, I'm very comfortable). But their purpose, I thought, was to let you "pass the address" so I could hydrate the thing it points to.</p>
  
  <p>since mutableDict is the "value copy", ARC appears to be wiping it out. I'm asking here because </p>
  
  <ol>
  <li>the other questions have the opposite question "Why is this being retained?" and </li>
  <li>It doesn't seem right. Your very first tutorial in any pointer language is "so you can mess with the original value". Does Arc really do this? Is there a concept I'm not getting?</li>
  </ol>
  
  <p>And of course, I may be overlooking something simple.</p>
  
  <p>I seem to have solved it by doing the writeback trick I found elsewhere:</p>
  
  <pre><code>- (void) initializeDictionary:(NSMutableDictionary* __strong *)mutableDictionary fromPath:(NSString*)path;
  </code></pre>
  
  <p>and using the &amp; to call and * deref to change the value. It just seems far less than elegant.</p>