2011-08-25 76 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