Как происходит передача параметров в задаче C? - PullRequest
0 голосов
/ 28 июня 2018

Я новичок в Objective-C, и я знаком с C ++. Я хочу знать, как происходит передача параметров в цели C. В C ++ у меня есть функция

void func(int a);

тогда, если я вызову эту функцию по

func(someVariable);

Это действительно выполнить:

int a = someVariable;

и func процессы a. Если приведенный выше код имеет смысл, то передача параметров действительна, в противном случае - нет.

Но в объективе-C, похоже, нет:

У меня есть строка NSMutableString *. Тогда я использую предложение

[string deleteCharactersInRange: {2,3}];

и компиляция не удалась.

как deleteCharactersInrange: определяется:

- (void) deleteCharacterInRange: (NSRange) aRange;

Так что я думаю, что он может выполнить

NSRange aRange = {2,3};

, который действителен.

1 Ответ

0 голосов
/ 28 июня 2018

Передача параметров в Objective-C такая же, как передача параметров в C. Передача параметров в Objective-C ++ такая же, как в C ++.

Вы полагаете, что передача параметров такая же, как и инициализация. Это неверное убеждение.

Обратите внимание, что:

void foo(NSRange r);

...

foo({2,3});

не является допустимым C, C ++, Objective-C или Objective-C ++. Это точно такая же ситуация, как и [string deleteCharactersInRange: {2,3}], поэтому компилятор тоже жалуется на это.

Обратите внимание, что, хотя NSMakeRange() определенно подходит, вы также можете использовать (NSRange){2, 3}.

...