2011-08-25 74 views
2

我使用以下几行来在我的objective-c程序中声明一个属性。add(Propertyname)方法来自哪里?

@property (retain) int Money; 

和我的实现文件中的syntesize。

现在我想在我的实现中添加一个addMoney方法来在我的程序中添加一笔钱。我在输入addMoney时,当我意识到Xcode说总是有一个这个名字的方法可以覆盖。它有以下签名。

-(void)addMoney:(NSSet *)objects; 

-(void)addMoneyObject:(object-type *)object 

哪里来的,谁打电话给他们?我怎么可以自己使用它?使用这个时必须注意什么?

+1

你的类继承什么类?请记住,并非来自Xcode的每个自动完成建议都会给你一个合法的选择。 – JeremyP

+0

它来自NSObject – Bernsen

回答

0

此方法实际上不存在。 Xcode通过完成一些常用的命名模式来帮助你。这有点常见的有这样的情况:

@class Thing; 
@property (nonatomic, retain) NSMutableSet *things; 

- (void)addThings:(NSSet *)someThings; 
- (void)addThing:(Thing *)aThing; 

的Xcode只是试图更容易一点点地键入。但是除非你创建它们,否则这些方法并不存在。

附注:你不能retainint,所以我认为这不是真正的代码。没关系。请确保您的属性以大写字母开头(money)。这不仅仅是个人风格。 ObjC在许多方面都依赖于键值编码。这就要求事物以某种方式命名,否则就无法工作。

+0

它来自真实的代码,但我输入并没有复制。所以我失败了正确的修饰符@。@。在C#中更容易。 是否可以使用 - (void)addMoney:(double)的值没有问题?该类型也是错误的:/ – Bernsen

+0

当然。尽管你不应该使用'双'钱。你想'NSDecimalNumber'或者你会得到舍入错误。 –

+0

它只是为了在游戏中的钱。无论如何,我认为我可以改变它。我在使用NSNumber时遇到了一些问题,但是在重写了很多东西之后,我可以尝试修复我以前的问题xD – Bernsen

0

Money是一个ManagedObject(核心数据对象)?如果是这样,那么该方法可能正在为您创建。合成属性应该提供setter和getter,但该方法看起来像 - (void)setMoney:(int)money和 - (int)Money

+0

我被添加方法困惑,因为我知道setter和getter在哪里命名不同。 – Bernsen