Разница между приращением префикса / постфикса в вызове метода Objective-C?

#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.