title: Objective C - Pass by value and pass by reference
body: <p>First of all, sorry for this simple question. But I need to understand what is happening.</p>
  
  <p>I thought the output should be <strong><code>upper case string</code></strong>. But it comes out to be <strong><code>UPPER CASE STRING</code></strong>.</p>
  
  <pre><code>- (void)test
  {
       NSString *stringVar = @"UPPER CASE STRING";
       [self changeString:stringVar];
       NSLog(@"value after changed : %@", stringVar);
  }
  
  - (void)changeString:(NSString*)string
  {
       string = [string lowercaseString];
  }
  </code></pre>
  
  <p>What is happening and how to fix it?</p>