title: Is it a good idea to retain/release method parameters in Objective-C?
body: <p>Consider the following ObjC code example:</p>
  
  <pre><code>- (void)doStuffWithString:(NSString *)someParam {
      // Do stuff with someParam
  }</code></pre>
  
  <p>If this code were being executed in a multi-threaded app, would it be a good idea to retain/release <code>someParam</code>? Specifically, I'm thinking of scenarios in which the passed-in parameter is a singleton object shared by many threads. Is the following safer, for example?</p>
  
  <pre><code>- (void)doStuffWithString:(NSString *)someParam {
      [stringParam retain];
      // Do stuff with someParam
      [stringParam release];
  }</code></pre>