我正在玩目标C.这是我写的一个类的代码,arithmetic.h:
#import <Foundation/Foundation.h>
@interface arithmetic : NSObject
@property int cur;
-(id)initWithNumber:(int)number;
@end
@implementation arithmetic
@synthesize cur;
- (instancetype)init
{
self = [super init];
if (self) {
NSLog(@"Yo, all works :D ");
}
return self;
}
-(id)initWithNumber:(int)num{
self = [super init];
if(self){
[self setCur:8] ;
}
return self;
}
@end
注意@property int cur。我除了目标c之外还创建了一个setCur和一个getCur方法作为我的类的访问器和mutators。但是,当我运行时:
arithmetic *test = [[arithmetic alloc] initWithNumber:89];
[test setCur:534];
NSLog("%i",[test getCur ]);
前两行有效。但最后一行说 没有可见的算术接口声明了选择器&#39; getCur&#39;
有什么问题?
答案 0 :(得分:0)
这是因为当你在@implementation中声明这样的时候:
@synthesize cur;
它会创建getter
-(int)cur {
return _cur;
}
并且还会创建一个setter
-(void)setCur:(int)newCur {
_cur = newCur;
}
总之,Objective-C getter / setter分别具有propery / setPropery模式,与使用getProperty / setProperty的Java不同。
通过点(。)表示法访问Objective-C getter / setter。例如
int x = obj.cur;
obj.cur = 100;