В Objective-C в чем разница между доступом к переменной в классе с помощью -> (оператор стрелки) и . (оператор точки)? Используется ли -> для прямого доступа к точке (.)?
В чем разница между '->' (оператор стрелки) и '.' (оператор точки) в Objective-C?
Ответ 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"];
		Ответ 2
Стрелка, ->, является сокращением для точки в сочетании с разыменованием указателя, эти два являются одинаковыми для некоторого указателя p:
p->m
(*p).m
Обозначение стрелки наследуется от C и C имеет его, потому что оператор доступа к члену структуры (.) связывается слабее, чем оператор разыменования указателя (*), и никто не хочет писать (*p).m все время и они хотят изменить приоритет оператора, чтобы люди пишут *(p.m) для разыменования указателя внутри структуры. Итак, стрелка была добавлена, чтобы вы могли сделать как p->m, так и *s.p разумно без уродства круглых скобок.
Ответ 3
Когда вы используете оператор стрелки ptr->member, он неявно разыгрывает этот указатель. Это эквивалентно (*ptr).member. Когда вы отправляете сообщения указателю на объект, указатель неявно разыменовывается.