Основная цель - это доставляет мне неприятности - PullRequest
1 голос
/ 04 марта 2010

У меня проблема с этим:

-(id)initWithName:(NSString *)n description:(NSString *)d url:(NSString *)u {

Я не совсем уверен, что здесь происходит, передается ли методу initWithName аргумент n, который передается в NSString?и также передается аргумент d, который также приводится к NSString?

Какова цель наличия там букв 'n' и 'l'?Нужно ли их определять где-либо еще, или они являются просто произвольными именами аргументов, чтобы помочь нам вспомнить, что это за аргументы?

Это один или три метода объединены?Методы 'description:' и 'url' тоже?

Извините, что этот вопрос настолько прост, я просто немного смущен этим.

Ответы [ 3 ]

6 голосов
/ 04 марта 2010

Это метод с именем "initWithName: description: url:", который принимает аргументы с именами n, d и u, все типа NSString*. Синтаксис Objective-C разделяет имя метода (называемое «селектором» в терминах Objective-C) на каждое двоеточие, и вы помещаете туда соответствующий аргумент. Дело в том, чтобы код читался более естественно. Я скажу, что n, d и u - чудовищные имена для аргументов.

Возможно, вас заинтересует Apple Язык программирования Objective-C . Он очень короткий, но все же сумел полностью описать и язык, и его философию.

2 голосов
/ 04 марта 2010

Это один метод.Вот как target-c передает несколько переменных в метод.Если вы более знакомы с C, это будет выглядеть примерно так: initWithName(n,d,u).

Однако в target-c больше информации о каждом параметре в вызове метода предоставляетсяЯ думаю, вам это понравится, потому что это поможет вам понять назначение каждого параметра.

2 голосов
/ 04 марта 2010

Иногда легче понять, когда добавляется дополнительный пробел:

-(id)initWithName:(NSString *)n
      description:(NSString *)d
              url:(NSString *)u
{
    ...

По сути, это метод, который принимает три аргумента, все они NSString аргументы, и они называются n, d и u соответственно. Важно отметить, что двоеточие является частью имени метода, но типы аргументов и имена аргументов не являются частью имени. Имя метода:

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