-
обозначает метод экземпляра, тогда как если бы это был +
, это был бы метод класса.
(id)
- это то, что возвращает метод, это просто ссылка на объект.
Остальная часть строки показывает параметры. При вызове функции вы записываете часть каждого параметра перед :
, например, [class initWithTitle:@"my title"];
Причина, по которой существует два имени для каждого параметра, заключается в том, что сам метод будет ссылаться на переменную независимо от того, что находится после :
, поэтому заголовок будет newTitle
.
Поначалу это меня смущало, но в этом есть свои преимущества.
Кроме того, части каждого параметра в круглых скобках являются типом объекта параметра. (NSString *)
является указателем на NSString
. Если бы вы пропустили что-то, что не было NSObject
, например, NSIntger
, вам бы не понадобилось *
. Вы бы просто сделали:
-(id)initWithInteger:(NSIntger)newInteger;