1

私はこのように宣言されたクラス/スーパークラスのペアを持っています:

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

Core Dataを使用してサブクラスのインスタンスを作成し、それをWSStatement *ポインター(つまりスーパークラス)に割り当てます。後で、サブクラスに固有のオブジェクトにメッセージを送信したいのですが、コンパイラーから「インスタンスメソッドが見つかりません(戻り型のデフォルトは「id」)」という警告が表示されます。

このようにキャストしてみました…。

[(WSIfStatement *)statement setThenStatement:aVariableParameter];

しかし、警告は続きます。プログラムは完全に実行されますが、厄介なコンパイラの警告を取り除くことはできません。完全な正式なObjective-C構文の説明がどこにも見つからなかったので、答えが明らかな場合はお詫びします!!

ありがとう

4

3 に答える 3

2

タイプミスでない場合、問題は間違ったメソッドを呼び出していることです。

@property (nonatomic, retain) WSStatement *thenstatement;

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

また、継承元のクラスを前方宣言することはできません。のヘッダーを含める必要がありますWSStatement。それでもエラーが発生する場合thenstatementは、実装で合成するようにしてください。

于 2012-04-17T15:08:08.617 に答える
1

プロパティを合成しましたか?あなたの.mファイルの使用:

@synthesize thenstatement;

これにより、集合関数が生成されます。

于 2012-04-17T15:04:34.863 に答える
0

#import "WSIfStatement.h"その呼び出しを行っている.mファイルに追加してみてください。

于 2012-04-17T15:01:28.093 に答える