初学oc的同学都应该会遇到这个问题,在test.h文件中
@interface test : NSObject
{
int a;
}
@property (nonatomic, retain) int b;
a为实例变量,其他类访问不了,b为属性自带get,set方法,整个工程可见。在test.m文件中使用时用a和self.b,其他.m文件中用test.b。实际上等同于在test.h中
@interface test : NSObject
{
int a;
int _b;
}
- (void)setb : (int) b;
- (int)getb;
在test.m中实现
- (void)setb : (int) b
{
_b = b;
}
- (int)getb
{
return _b;
}
当变量名与去掉“_”前缀的成员变量相同时,在*.m文件中使用@synthesize将二者联系起来。
test.h
@interface test : NSObject
{
int _a;
}
@property (nonatomic, retain) int a;
test.m
@implementation test
@synthesize a=_a;
@end
_a : 直接访问成员变量
self->_a : 直接访问成员变量
self.a : get方法
[self a] : get方法