2011-07-18 19 views
0

Objective-Cでは、(おそらくインタフェースファイルの)サブクラスの定義において、スーパークラスから継承したインスタンス変数(ivar)をキャストすることは可能ですか?Objective-C:スーパークラスのインスタンス変数をサブクラスにキャストしますか?

は私がNSObject *sessionとして、スーパークラスのIVARを定義したので、これをやりたい、と私はそれを毎回キャストする必要がないように、私はそれにメッセージを送るよ、Facebook *sessionにsubclasseのIVARをキャストしたいですFacebookインスタンスは応答しますが、NSObjectインスタンスは応答しません。

答えて

2

は、スーパークラスのインタフェース変数のタイプを変更する方法はありません、あなたができる一つのことは、私は `init`メソッドを動的に型付けされている理由は、これがあると信じて

- (Facebook *) getSession { 

    return (Facebook *)[self session]; 

} 
+1

ような、getterメソッドを追加することです(それらは 'id'を返すと宣言されています)。 –

+0

ええ、ローカル変数、たとえば 'Facebook * fbSession =(Facebook *)self.session'を宣言しましたが、あなたのアプローチはより拡張性があります。ありがとう! – ma11hew28

関連する問題