2012-02-27 5 views
0

私はクラスA、B & CをiPhoneプロジェクトに持っています。 iPhoneアプリケーションが実行されている間に、どちらのクラス(AまたはB)でもクラスCのオブジェクトをインスタンス化できます。どのクラスでオブジェクト(AまたはB)をインスタンス化したのですか? Cにivarを加えることなく知る方法はありますか?私はスーパークラスを使用しようとしましたが、私はそれを間違って使用しているか、それは私がやろうとしているもののためではありません。どのクラスが別のクラスを呼び出したかを知るには?

ありがとうございます!

答えて

1

スーパークラスは、オブジェクトの作成者、オブジェクトに継承されるものではありません願っ何のフラグを設定することができます初期化中に新しいのinitメソッドinitFromClass: (id) parentを追加することができます。

返信の方法の1つは、代理人によるものです。Cでデリゲートプロパティを設定する(AまたはB)ことができますか?それはあなたが避けたいivarのようなものですが、プロトコルを使用するときれいなOOコードとみなされます。

なぜCが知っている必要があるのか​​を知っておくとよいでしょう。彼は方法を送る必要がありますか?委任はそれに最適です。そうでない場合は、William Bonarが述べたカスタムinitメソッドを使用することも可能です。あなたはViewControllerをで作業しているなら、あなたはなどpresentingViewControllerなどの方法

幸運、

ダミアン制御について述べていないため申し訳ありません

+0

おかげさまで、これは別のビュー上に表示されているビューなので、ViewControllerは含まれていません。これは最善のアプローチでしたが、デリゲートオプションは完全に機能しています。ありがとう! – Christian

1

クラスcがあなたのコントロール下にないとコメントしているとします。

あなたは、cをサブクラス化し、あなたが

+0

を持っています。実際に私はクラスCを制御しています。クラスCは、他の2つの異なるビュー(A&B)から表示できるヘルプビューです。どのクラスがクラスCを表示しているかを知る必要があるので、どのテキストが他のヘルプクラスを作成する必要はありません。 – Christian

関連する問題