Objetivo C - Passe por valor e passe por referência

Primeiro de tudo, desculpe por esta simples pergunta. Mas preciso entender o que está acontecendo.

Eu pensei que a saída deveria serupper case string. Mas vem a serUPPER CASE STRING.

- (void)test
{
     NSString *stringVar = @"UPPER CASE STRING";
     [self changeString:stringVar];
     NSLog(@"value after changed : %@", stringVar);
}

- (void)changeString:(NSString*)string
{
     string = [string lowercaseString];
}

O que está acontecendo e como consertar isso?

questionAnswers(5)

yourAnswerToTheQuestion