title: Which way to initialize NSString* pointer in class
body: <p>I'm using <code>NSString</code> in my classes and often need to copy string value to another class. But my question is how should I initialize string in, for example <code>init</code>? 
  (value is class member and the following calls are in init)</p>
  
  <pre><code>value = [NSString stringWithCString:inStrning encoding:NSASCIIStringEncoding];
  </code></pre>
  
  <p>or</p>
  
  <pre><code>value = [[NSString alloc] initWithCString:inStrning encoding:NSASCIIStringEncoding];
  </code></pre>
  
  <p>What is the difference here? Does a memory allocated in 1st call released when init finishes?
  I'm using <code>value</code> as a <code>assign</code> property. Would it be better to use <code>copy</code>?</p>
  
  <p>And what about copying string when I'm passing it to class using some method? Example:</p>
  
  <pre><code>-(id) initWithObjectTypeStr:(NSString*)inTypeStr
  {
      ...
      objectTypeStr = [NSString stringWithString:inType];
      //or 
      objectTypeStr = [[NSString alloc] initWithString:inType];
  }
  </code></pre>
  
  <p><code>objectTypeStr</code> is not defined as property so it has default properties (<code>assign</code> I think).</p>
  
  <p>What is the best practice to use in this case?</p>