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