Objective C getter方法不适用于属性

时间:2015-12-03 01:12:45

标签: objective-c class properties

我正在玩目标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;

有什么问题?

1 个答案:

答案 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;