2012-01-27 17 views
1

私の場合、UIViewControllerBはUIViewControllerAのサブクラスです.BはAからサブクラス化する(つまり、AはBの親である)ため、Aからすべてのメソッドと変数に確実にアクセスできます。iOSのサブクラスの問題

ただし、AにはBの変数が必要です。これを行うことは可能ですか?

ありがとうございました。

+0

@class ...... –

+0

実行時に実際の変数値にアクセスすることについて話していますか?そうした場合、いくつかのオプションがあります。通知、nsuserdefaultsにデータを保存する、など – ader

+0

私は(親)をしたいが、実行時にB(子)によって設定されたインスタンス変数にアクセスすることができます。それを設計し、コード化する方法は? – user403015

答えて

0

実際には、このタイプの関係が必要な場合は、デザインが間違っています。つまり、継承関係は必要ありませんが、集約や構成のようなものです。たとえば、関係の種類によってLiskovの置換原理が破られます。

しかし、目的Cは、逆の関係を受け入れます。デリゲート(@protocol)を使用して、この@プロトコルを受け入れる未知のオブジェクトからデータを取得できるインターフェイスを記述できます。

だから、あなたのケースクラスBにB.そしてAのいくつかのプロパティへのアクセスを提供するプロトコルはAが必要ゲッターを知っている、すなわち、このプロトコルで動作することができるはず準拠している必要があります。

0

その変数をサブクラスAのデフォルトとして追加します。サブクラスBで使用できますか?

あなたが嫌い​​なことがあれば、あなたのデザインに何か問題があると思いますか?

+0

私が欲しいのは(親が)実行時にB(子)によって設定されたインスタンス変数にアクセスする必要があるということです。 – user403015

0

サブクラスで宣言されたインスタンス変数はgetterメソッドを持っている場合、それはrespondsToSelector場合、スーパークラスのいずれかの方法では、常にそのクラスのオブジェクトを求めることができる:そのgetterメソッドのために、そうであれば、の値を取得するためにそれを呼び出しますインスタンス変数

+0

ありがとうございます。あなたのアイデアのサンプルコードを私に見せてください。それは私にとって大きな助けになるでしょう。 – user403015