首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getter和getter不起作用目标c

getter和getter不起作用目标c
EN

Stack Overflow用户
提问于 2011-07-27 10:30:01
回答 1查看 3.3K关注 0票数 5

我不能在objective c中这样做吗?

代码语言:javascript
复制
@interface Foo : NSObject {
     int apple;
     int banana;         
}

@property int fruitCount;
@end

@implementation Foo
@synthesize fruitCount; //without this compiler errors when trying to access fruitCount

-(int)getFruitCount {
      return apple + banana;
}

-(void)setFruitCount:(int)value {
      apple = value / 2;
      banana = value / 2;
}

@end

我像这样使用这个类:

代码语言:javascript
复制
Foo *foo = [[Foo alloc] init];
foo.fruitCount = 7;

然而,我的getter和setter没有被调用。如果我改为这样写:

代码语言:javascript
复制
 @property (getter=getFruitCount, setter=setFruitCount:) int fruitCount;

我的getter被调用了,但是setter仍然没有被调用。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-27 10:47:21

你的语法有点不对劲...要在示例中定义自己的属性访问器实现,请使用以下内容:

代码语言:javascript
复制
@implementation Foo
@dynamic fruitCount;

// ⚠ NOTE that below has NOT "getFruitCount" name.

- (int) fruitCount {
   return apple + banana;
}
- (void) setFruitCount :(int)value {
      apple = value / 2;
      banana = value / 2;
}

@end

使用@synthesize告诉编译器建立默认的访问器,在这种情况下,您显然不希望这样做。@dynamic向编译器表明您将编写它们。苹果的文档中曾经有一个很好的例子,但不知何故在他们的4.0 SDK更新中被破坏了……希望这能有所帮助!

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6838852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档