->
- это традиционный оператор C для доступа к члену структуры, на которую ссылается указатель. Поскольку объекты Objective-C (обычно) используются как указатели, а класс Objective-C является структурой, вы можете использовать ->
для доступа к его членам, которые (обычно) соответствуют переменным экземпляра. Обратите внимание, что если вы пытаетесь получить доступ к переменной экземпляра извне класса, тогда переменная экземпляра должна быть помечена как общедоступная.
Так, например:
SomeClass *obj = …;
NSLog(@"name = %@", obj->name);
obj->name = @"Jim";
обращается к переменной экземпляра name
, объявленной в SomeClass
(или одном из ее суперклассов), соответствующей объекту obj
.
С другой стороны, .
(обычно) используется как точечный синтаксис для методов получения и установки . Например:
SomeClass *obj = …;
NSLog(@"name = %@", obj.name);
эквивалентно использованию метода геттера name
:
SomeClass *obj = …;
NSLog(@"name = %@", [obj name]);
Если name
является объявленным свойством , можно присвоить его методу-получателю другое имя.
Точечный синтаксис также используется для методов установки. Например:
SomeClass *obj = …;
obj.name = @"Jim";
эквивалентно:
SomeClass *obj = …;
[obj setName:@"Jim"];