Если a
является объектом Objective-C, то a.b = c;
- это то же самое, что и запись [a setB:c];
.
setB:
, в этом случае это имя по умолчанию для метода автоматически сгенерированного сеттера, когда вызадают @property (...) typeB b;
и @synthesize b
.Вместо ...
вы можете разместить соответствующий спецификатор памяти, как сохранить, назначить, скопировать.Написав a->b = c
, вы избегаете использования метода установки и получаете прямой доступ к b
.
Итак, конструкция a->b
генерирует меньше дополнительного кода, но нарушает одно из основных понятий ООП «Инкапсуляция», и вы такжеследует обращаться с персоналом, связанным с памятью, вручную.
Например, если вы указали retain
в b
@property
, тогда конструкция a.b = c
будет вести себя почти так же, как a->b = [c retain]
.