#objective-c #operators
#objective-c #операторы
Вопрос:
Я понимаю разницу между префиксной и постфиксной нотацией в обычном C.
Однако мне было интересно, применяются ли те же правила к вызовам метода Objective-C, например
[myObject foo: i];
и
[myObject foo:i ];
Или «внутреннее выражение C» всегда вычисляется первым, два вызова метода, таким образом, дают один и тот же результат?
Ответ №1:
Да, применяются те же правила. Obj-c является строгим надмножеством c, поэтому все, что работает на c, будет работать точно так же в Objective-c.
i
Будет ли увеличиваться i
до вызова метода, поэтому эти 2 метода не дадут одинакового результата (при условии или, конечно, что результат зависит от значения i
). Один вызывается после увеличения, другой вызывается до. i
Комментарии:
1. Я только что попробовал, и это действительно так, как вы говорите. Однако я не думаю, что аргумент «superset» является очень хорошим в данном конкретном случае, поскольку, возможно, Objective-C оценивал выражения C отдельно и просто вставлял конечный результат в оператор вызова метода.
Ответ №2:
Почему бы на самом деле не попробовать и не выяснить?
Результат, как и следовало ожидать, префиксная версия работает перед вызовом метода. Постфикс срабатывает после вызова метода.
Ответ №3:
это то же самое, что и C. ObjC является надмножеством C.