2012-02-19 52 views
0

我是新來的Objective-C代碼,但我試圖從我的書「Head First iPhone Development」中學習,而且我的「* decisionText」有一些問題。在.m文件中。目標C代碼或我的錯誤?

@synthesize decisionText; 
no declaration of property 'decisionText' found in the interface 

那麼代碼有什麼問題?我使用的版本是Xcode3和Snow Lepord(10.6.8)。 我錯過了什麼嗎?

+1

在XCode產品開發的這個階段,「誰是錯」問題的答案几乎總是「它就是你」。一個不需要閱讀整個問題:) – dasblinkenlight 2012-02-19 21:46:12

+0

您應該瞭解@synthesize的作用 - 它爲給定屬性生成所謂訪問器方法的實現。這裏的問題(如下面的多個答案中所述)是您沒有在界面中聲明屬性。 – bneely 2012-02-19 21:48:10

+1

您應該檢查(打勾)您認爲最能回答您的問題的答案,以恰當地回答回答者。 – zenopolis 2012-02-20 11:27:48

回答

3

沒有冒犯,但可能是你的問題,而不是Objective-C。您需要在.h文件中聲明一個匹配的屬性(界面中的AKA)。

例如:

@property (retain) NSString* decisionText; 
+0

屬性聲明通常在頭文件中,但它也可以在實現文件的類擴展中。 – 2012-02-19 21:44:11

+0

@JonReid - 看起來合法:) – MByD 2012-02-19 21:46:29

+0

非常感謝!^_ ^我當時在玩,並認爲改變代碼會有什麼傷害,我做了,現在它工作!即時通訊只是一個愚蠢的孩子,我能說什麼? – NoSco 2012-02-19 22:16:04

1

你在一個類的實現添加@synthesize decisionText;

@implementation MyClass 
//... 
@synthesize decisionText; 
//... 

找到相應的接口聲明(在.h或.m文件),並添加:

@interface MyClass 
//... 
@property DecisionTextType *decisionText; 
//... 

其中DecisionTextType是的類型,可能NSString