我是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
我不清楚我是否正在使用以下语法访问支持ivar或通过getter和setter(我将包括我对其认为正在做的假设):
name = @"Geoff";
这是通过属性设置器还是直接设置ivar?self.name = @"Geoff";
通过setter self->name = @"Geoff;"
直接访问[ name release ];
这是直接访问ivar还是通过getter?我知道这可以通过在合成语句中设置ivar来消除歧义:@synthesize name=_name
就像在很多XCode 4 IOS模板中一样。
答案 0 :(得分:1)
name = @"Geoff";
正在直接设置ivar。[ name release ];
正在直接访问ivar。如果您没有看到self.
并且您没有调用获取或设置变量的方法,那么您正在访问ivar。
有关详细信息,请参阅The Objective-C Programming Language。