MyInnerClass
と呼ばれるネストされた小さな内部クラスを持つMyClass
というクラスがあります。実装ファイルには、次のようになります(とも、ネストされた内部クラスのIVARが含まれています):内部クラスのiVarを参照する際の問題
@class MyInnerClass;
@interface MyClass
{
MyInnerClass *myInnerClassIvar;
}
@property(nonatomic, retain) MyInnerClass *myInnerClassIvar;
@end
そして、実装ファイルで、私はMyClass
とMyInnerClass
の両方を実装しています。次のようになります。
@interface MyInnerClass
{
iVar *x;
}
@property(nonatomic, retain) iVar *x;
@end
@implementation MyInnerClass
@synthesize x;
...
@end
@implementation MyClass
@synthesize myInnerClassIvar;
...
@end
私は今MyClass
ためのサブクラスを作成していますし、それに私はこのような呼び出し作るしようとしている:
self.myInnerClassIvar.x
をそして、私は次のメッセージを取得しています:
Property x cannot be found in in forward class object MyInnerClass *
何か忘れていますか?前に内部クラスを実装していないので、これがうまくいかない理由はありません。
UPDATED:MyInnerClassのインターフェイスをMyClassの.hに移動し、すべてが機能します。これは良い解決策ですか?
ブラケット表記( '[myInnerClassIvar x]')でアクセスしようとしましたか?また、定義されたタイプと合成されたタイプは異なります( 'iVar x'と' iVar * x') – Alexander
ブラケットを使ってアクセスすると、まだ警告が表示されますが、 "xは非推奨"です。それはちょうど本当に変だ。合成された型が違うのは、これをタイプすると私が間違っていただけです(私はそれを修正しました)。 –
廃止予定の警告は本当に奇妙です。 – Alexander