2012-04-17 45 views
1

鑄造接收機我有一個類/超類對聲明從而:語法在Objective-C

@class WSStatement; 
@interface WSIfStatement : WSStatement 
@property (nonatomic, retain) WSStatement *thenstatement; 
@end 

我創建使用核心數據並將其分配給一個WSStatement *指針的子類的實例(即超級類)。在稍後的一點,我想發送一條消息到特定於該子類的對象,並且編譯器給我一個警告,說「實例方法未找到(返回類型默認爲'id')」

我有嘗試鑄造像這樣....

[(WSIfStatement *)statement setThenStatement:aVariableParameter]; 

但警告仍然存在。該程序執行完美,但我擺脫不了討厭的編譯器警告。我無法在任何地方找到完整的正式Objective-C語法描述,所以如果答案顯而易見,我表示歉意!

感謝

回答

2

如果它不是一個錯字,那麼問題是你打電話錯誤的方法。

@property (nonatomic, retain) WSStatement *thenstatement; 

//Will be called with a lowercase s for statement 
[(WSIfStatement *)statement setThenstatement:aVariableParameter]; 

此外,你不能只是轉發聲明你繼承的類。您需要包含WSStatement的標題。如果您仍然有錯誤,請確保在實施中合成thenstatement

+0

感謝喬 - 一如既往 - 顯而易見的事情是最容易錯過的!在聲明的財產聲明中是小寫字母s。它起因於這是一個來自Core Data的生成類,雖然我在覈心數據建模工具中改變了案例,但我忘記了重新生成模型類。再次感謝。 – drew 2012-04-17 15:43:24

+3

如果答案是正確的,你應該接受它。 – 2012-04-17 16:41:14

0

嘗試增加#import "WSIfStatement.h"您.m文件在那裏你作出這一呼籲。

1

您是否合成過這些屬性?在你的.m文件中使用:

@synthesize thenstatement; 

這會產生set函數。

+0

這是爲什麼被低估?如果不合成該屬性,將會出現此錯誤。那麼語句和setThenStatement將不存在。 – Cthutu 2012-04-17 15:11:23

+0

也許是因爲你有一個拼寫錯誤,'#synthesize'而不是'@ synthesize'。仍然不值得投票。 – Joe 2012-04-17 15:12:37

+0

感謝您的評論,但來自這傢伙的評論足以讓我解決它。我現在修好了。抱歉,錯字和感謝指出。該死的法裔加拿大鍵盤。 – Cthutu 2012-04-17 15:14:41