Все методы Objective C получают неявный параметр с именем self
, который является переменной стека типа id
, которая указывает на текущий экземпляр. Фактически, любая функция C может использоваться как метод Objective-C, если ее первые два параметра имеют тип id
и SEL
(см. Ниже).
self
не является зарезервированным ключевым словом в Objective-C, как this
в Java. Вы можете, например, переназначить self
в методе. Это стандартный шаблон в init
методах:
-(id)init {
if( (self = [super init]) ) {
// do initialization here
}
return self;
}
, но переназначение self
редко используется в любом другом контексте.
Вы можете использовать self
как и любую другую переменную типа id
: [self bar:i]
в приведенном вами примере.
Для полноты картины все методы Objective C также получают параметр implicity с именем _cmd
, который также является селектором (тип SEL
) вызываемого метода. См. Objetive-C Runtime Reference для получения дополнительной информации.