вопрос о синтаксисе target-c - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь изучить цель-c, и у меня есть вопрос относительно этого метода:

- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
}

Согласно документации , имя метода tableView:cellForRowAtIndexPath:, иэто берет 2 параметра, представление таблицы и путь индекса.Возвращает указатель на UITableViewCell.

Итак, (UITableViewCell *) представляет тип возвращаемого значения, но я не понимаю, почему параметр tv встречается за до имени метода cellForRowAtIndexPath.Мне кажется, что здесь мы имеем возвращаемый тип, затем param1, затем имя метода, затем param2.

Я действительно все еще пытаюсь понять базовый синтаксис target-c, поэтому любая помощь приветствуется,Спасибо.

Ответы [ 2 ]

4 голосов
/ 22 июня 2011

Имя метода tableView:cellForRowAtIndexPath:, все, а не просто cellForRowAtIndexPath:

- в начале означает, что это метод экземпляра, если бы это был метод класса, он был бы+.Например, когда вы alloc объект, alloc является методом класса.

Тип возврата указан в первых скобках.Если метод ничего не возвращает, скобки будут содержать void.

Затем идет первая часть имени метода, она находится между закрывающей скобкой возвращаемого типа и первым двоеточием.Если метод не имеет параметров, двоеточие отсутствует.

Сразу после двоеточия в скобках указывается тип первого параметра.

Сразу после скобок следует имя первого параметра.

После пробела имя метода продолжается таким же образом.

enter image description here

2 голосов
/ 22 июня 2011

Вы совершенно правы в своем описании.Основной синтаксис метода:

(ReturnObjectType *)someMethodWithInput1:(Input1Type *)input1 
                               andInput2:(Input2Type *)input2
                                andAnInt:(int)input3;

Как правило, Objective-C не имеет именованных параметров, поэтому все в левой части двоеточия является частью имени метода.Для этого примера:

- (return_type)instanceMethodWithParameter:(param1_type)param1_varName 
                         andOtherParameter:(param2_type)param2_varName;

Имя метода - instanceMethodWithParameter:andOtherParameter;.Если вы используете вышеупомянутое для объявления функции, например, в заголовочном файле, то вы можете без проблем изменить имена параметров в реализации.Так что это действительно просто для удобства.

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