Позволяет разбить его на части:
-
Это означает, что это метод экземпляра. Альтернатива - +
, что означает метод класса.
(NSInteger)
Это тип возвращаемого значения метода. В данном случае это NSInteger
.
tableView:
Первый компонент имени селектора (то есть, полностью, tableView:numberOfRowsInSection:
). :
указывает, что параметр следует.
(UITableView *)
Тип параметра.
tableView
Название параметра. Это в значительной степени не имеет значения в сигнатуре метода (кроме как для подсказки читателю относительно цели), но в реализации это переменная, которая связана с этим параметром.
numberOfRowsInSection:
Следующий компонент имени селектора.
(NSInteger)
Тип второго параметра.
section
Имя второго параметра.
Обратите внимание, что во всей этой строке требуется только один пробел между tableView
и numberOfRowsInSection:
. Все остальные пространства могут быть выбраны для производства
-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section
Хотя самый распространенный формат, который вы найдете, выглядит следующим образом:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
Редактировать: Похоже, что в последней части вопроса все еще есть некоторая путаница. Компонент селектора tableView:
предназначен для предоставления экземпляра UITableView*
, задающего вопрос. Все методы в протоколе UITableViewDataSource
предоставляют отправку табличного представления в качестве аргумента. Некоторые из этих методов имеют другие аргументы, а некоторые нет. Те, у которых есть дополнительные аргументы, отформатированы как tableView:someOtherThing:
(например, tableView:numberOfRowsInSection:
), но это не обязательно. Его можно назвать numberOfRowsInTableView:forSection:
, или numberOfRowsInSection:ofTableView:
, или даже foo:bar:
, но это был стилистический выбор, который был сделан разработчиком API для сохранения согласованной схемы именования, которая поможет как разработчику, так и человеку, читающему код позже. Что касается методов, которые не принимают никаких других параметров, они выглядят как numberOfSectionsInTableView:
, потому что это просто естественное имя метода. Их нельзя назвать tableView:numberOfSections
, потому что это недопустимый селектор (все компоненты после первого должны иметь связанный параметр и, следовательно, должны иметь завершающий :
).