Может кто-нибудь объяснить этот синтаксис объявления метода для меня? В этой функции возвращается число строк UIPickerView (пользовательский интерфейс игрового автомата на iPhone). Насколько я понимаю, метод называется ' pickerView
' и возвращает NSInteger.
Он передает указатель на UIPickerview с именем ' pickerView
' ... во-первых, почему метод называется тем же именем, что и параметр?
Затем следует параметр NSInteger, называемый компонентом, который сообщает нам, для какого компонента мы рассчитываем строки. Логика, чтобы решить, что находится в теле метода.
Что такое numberOfRowsInComponent
? Кажется, оно описывает значение, которое мы возвращаем, но оно находится в середине параметров.
- (NSInteger) pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{
if (component == kStateComponent)
return [self.states count];
return[self.zips count];
}
источник
В Objective-C имя метода состоит из всех частей объявления, которые не являются аргументами и типами. Поэтому имя этого метода будет:
Метод будет эквивалентен функции в стиле C, которая выглядит следующим образом:
редактировать: (благодаря Джаррету Харди ):
источник
В дополнение к предыдущим ответам, я просто хотел бы сказать, что методы Objective-C (или сообщения, если вы предпочитаете) имеют внешние и внутренние имена параметров.
Итак, в этом случае:
numberOfRowsInComponent
это внешнее имя, которое вы бы использовали при вызове этого метода извне.И
component
это внутренний имя параметра, которое вы используете для ссылки на параметр внутри метода.Надеюсь, это немного прояснит.
источник
Мне кажется, что сигнатуры метода Objective-C больше похожи на предложения. Каждый параметр заслуживает участия в имени метода. Например, в C у нас может быть метод ( setPersonData ) для установки некоторой информации о персоне:
и в Objective-C метод будет более описательным ( setPersonName: andAge: andHeight:) , как
источник