Методы с несколькими аргументами в цели C - PullRequest
0 голосов
/ 29 января 2012

Если вы возьмете вызов этого метода, например (из другого поста )

- (int)methodName:(int)arg1 withArg2:(int)arg2
{
    // Do something crazy!
    return someInt;
}

Действительно ли withArg2 когда-либо использовался для чего-либо внутри этого метода?

Ответы [ 3 ]

5 голосов
/ 29 января 2012

withArg2 является частью имени метода (обычно оно пишется без аргументов как methodName:withArg2:, если вы хотите сослаться на метод в документации), поэтому нет, оно не используется ни для чего внутри метода.

2 голосов
/ 30 января 2012

Как отмечает Тамас, withArg2 является частью имени метода.Если вы напишите функцию с точно таким же именем на C, она будет выглядеть следующим образом:

int methodNamewithArg2(int arg1, int arg2)
{
  // Do something crazy!
  return someInt;
}

Исходя из других языков программирования, синтаксис Objective-C сначала может показаться странным, но через некоторое время выначнёт понимать, как это делает весь ваш код более выразительным.Если вы видите следующий вызов функции C ++:

anObject.subString("foobar", 2, 3, true);

и сравниваете его с аналогичным вызовом метода Objective C

[anObject subString:"foobar" startingAtCharacter:2 numberOfCharacters:3 makeResultUpperCase:YES];

, должно быть ясно, что я имею в виду.Пример может быть надуманным, но суть в том, чтобы показать, что вложение значения следующего параметра в имя метода позволяет писать очень читаемый код.Даже если вы выберете ужасные имена переменных или будете использовать литералы (как в примере выше), вы все равно сможете разобраться в коде, не обращаясь к документации метода.

0 голосов
/ 29 января 2012

Вы бы назвали этот метод следующим образом:

int i=[self methodName:arg1 withArg2:arg2];

Это просто способ iOs облегчить чтение кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...