retain in Objective C
<p>for eg. </p>

<pre><code>NSMutableString * str1 = [[NSMutableString alloc]initwithString:@"matrix"]; 
NSMutableString * str2 = [str1 retain]; // str2 = matrix - output
NSMutableString  * str3 = [str1 copy]; //str3 = matrix - output 
</code></pre>

<p>what happen when 2nd line execute. are str1 and str2 different objects ? str1 points to "matrix", but is str2 also points to "matrix" ? if i change contents of str1, will str2 content changed ??</p>
