NSString immutable pozwala na zmianę jego wartości?

Poniższy kod kompiluje i uruchamia, ALE według wszystkich książek na temat rozwoju iPhone'a i dokumentacji Apple nie powinien! Czy ktoś może mi wyjaśnić, jak niezmienny NSString pozwala zmienić jego wartości po ustawieniu? Myślałem, że muszę użyć NSMuttableString, aby zmienić kontekst tej samej zmiennej łańcuchowej? Używam SDK 3.1.

NSString *test =[[NSString alloc] initWithString:@"TEST"];
[test release];
test = @"TEST2";

questionAnswers(3)

yourAnswerToTheQuestion