Я новичок в Objective-C и немного озадачен тем, к чему я обращаюсь при вызове свойства различными способами в коде.
// MyClass.h
@interface MyClass : NSObject {
}
@property ( nonatomic, retain ) NSString *name;
@end
//MyClass.m
#import "MyClass.h"
@implementation MyClass
@synthesize name;
// other code...
@end
Мне неясно, получаю ли я доступ к поддерживающему ивару или иду через геттер и сеттер, используя следующий синтаксис (я включу мои предположения относительно того, что, по моему мнению, он делает):
name = @"Geoff";
это происходит через установщик свойств или непосредственно настраивает ivar?
self.name = @"Geoff";
проходит через сеттер
self->name = @"Geoff;"
прямой доступ к ивару
[ name release ];
это доступ к ивуру напрямую или через геттер?
Я знаю, что это можно устранить неоднозначно, установив значение ivar в операторе синтеза, например: @synthesize name=_name
, как это делается во многих шаблонах IOS XCode 4.