Вам не нужно синтезировать средства доступа - вы можете прекрасно написать их самостоятельно, что и делается в вашем примере.
Кроме того, свойство только для чтения не обязательно должно быть основано на иваре, но может быть вычислено на основе других иваров или свойств. Это может быть полезно, если вы используете привязки для отображения значений в пользовательском интерфейсе, которые получены из других свойств, если вам нравится этот стиль кодирования.
Вот простой пример свойства только для чтения, вычисленного на основе двух других свойств:
Заголовочный файл:
@property double width;
@property double height;
@property (readonly) double area;
Реализация:
@synthesize width, height;
- (double)area
{
return width*height;
}
+ (NSSet *)keyPathsForValuesAffectingArea
{
return [NSSet setWithObjects:@"width", @"height", nil];
}
Теперь, когда изменяется либо width
, либо height
, свойство area
также изменяется, и его изменения распространяются на слушателей (благодаря keyPathsForValuesAffectingArea
.)
Вы также можете увидеть пример fullName
в этом документе .