C указатели против Objective-C указатели

Я пришел из Objective-C и пытаюсь расширить свои знания в C. Однако меня смущает одна вещь:Разница между указателями в C и Obj-C. Как вы можете видеть из приведенных ниже примеров, кажется, что между двумя языками дела обстоят немного по-разному, и мне было интересно, не могли бы вы помочь объяснить, почему?

C код работает нормально:

void myFunction()
{
    int x, *pointerX; 
    pointerX = &x;
    *pointerX = 5;

    // Prints: "x is 5"
    printf("x is: %i", x);
}

Код Obj-C не работает:

- (void)myMethod
{
    NSString *string = @"Caramel coffee", *stringPointer;
    stringPointer = &string;                    // Warning:   Assignemnt from incompatible pointer type
    *stringPointer = @"Chocolate milkshake";    // Exception: Incompatible types in assignment

    NSLog(@"string is: %@", string);
}

Вопрос: Почему можноя назначаю stringPointer адресу памяти строки (stringPointer = &string;) и почему я могу выполнить*pointerX = 5; под C, но я могут выполнять*stringPointer = @"Chocolate milkshake"; под Objective-C?

Я понимаю, что Obj-C имеет дело с объектами, а C нет, но я могуКажется, я не могу понять, почему это не так.т работать в Obj-C. Любая помощь очень ценится. Спасибо! :)

Ответы на вопрос(7)

Ваш ответ на вопрос