В чем разница между использованием метода и свойства? - PullRequest
1 голос
/ 09 ноября 2010

Я изучаю исходный код примера приложения «Элементы» и вижу, что в AtomicElement.h есть четыре свойства, объявленные как только для чтения:

@property (readonly) UIImage *stateImageForAtomicElementTileView;
@property (readonly) UIImage *flipperImageForAtomicElementNavigationItem;
@property (readonly) UIImage *stateImageForAtomicElementView;
@property (readonly) CGPoint positionForElement;

В реализациифайл, они выглядят как

- (UIImage *)stateImageForAtomicElementTileView {
    return [UIImage imageNamed:[NSString stringWithFormat:@"%@_37.png",state]];
}

Не могли бы вы уточнить причины этого?Почему бы не использовать что-то вроде

- (UIImage*) stateImageForAtomicElementTileView;

в заголовочном файле, а затем обращаться к нему как [element stateImageForAtomicElementTileView]; вместо element.stateImageForAtomicElementTileView?

1 Ответ

0 голосов
/ 09 ноября 2010

Я не думаю, что есть техническая причина выбирать одну идиому вместо другой, они могут быть использованы одинаково. Это больше вопрос семантики.

Класс имеет как данные, так и может выполнять операции (обычно над этими данными). Я думаю, вам следует рассмотреть использование свойства и наличие доступа . вместо [ ] в качестве способа документирования цели stateImageForAtomicElementTileView.

Это изображение, являющееся частью класса (факт, который генерируется не на лету из ресурса, должен рассматриваться как деталь реализации)

...