Свойства используются для генерации методов доступа для переменных экземпляра, никакой магии не происходит.
Вы можете реализовать те же средства доступа вручную.
Вы можете найти в книге Аарона Хиллегаса примеры 3 стратегий управления памятью для переменных-членов. Они assign/copy/retain
. Вы выбираете один из них, как требуется для данной переменной.
Полагаю, вы понимаете управление памятью в Objective-c ...
Средства доступа скрывают сложность и различия в управлении памятью для каждой переменной.
Например:
name = @"Test"
- это простое назначение, name
теперь содержит ссылку на NSString @"Test"
. Однако вы можете решить использовать copy
или retain
. Независимо от того, какую версию управления памятью вы выбрали, аксессор скрывает сложность, и вы всегда получаете доступ к переменной с помощью (или аналогичного):
[self setName:@"Test"]
[self name]
Теперь setName:
может использовать assign/copy or retain
, и вам не нужно об этом беспокоиться.
Я предполагаю, что в руководствах по iPhone используются свойства, чтобы новым разработчикам было проще переходить через управление памятью (даже если удобно генерировать соответствующие средства доступа со свойствами, а не реализовывать их вручную каждый раз).