0

特定のクラスのオブジェクトの同じ参照に2つの異なるXib内でアクセスする方法を知りたいです。

各xib内のクラスのオブジェクト参照を作成することにより、異なるオブジェクトが作成されることを理解しています。AppDelegateを使用している場合でも、さまざまなオブジェクトを作成します。私が達成したいのは、両方のxib内の参照オブジェクトが同じである必要があることです(たとえば、オブジェクトを2つの異なるテーブルビューのデータソースとして使用できるようにするため)。

4

3 に答える 3

2

オブジェクトを一度だけ作成し、両方のクラスからアクセスできる場所に配置します。たとえば、オブジェクトをアプリケーション デリゲートのプロパティとして作成できます。それから加えて

AppDelegate *app = [[UIApplication sharedApplication] delegate];

クラスに(をインポートした後AppDelegate.h)、 を使用してオブジェクトにアクセスしますapp.objectName

于 2012-08-07T14:54:50.777 に答える
2

他の答えはうまくいきますが、それは悪い設計です。

に固執する必要がありtell don't ask ruleます。オブジェクトに使用させたい dataSource を与えます。実際には厄介なグローバルである dataSource を要求しないでください。

もう1つの問題は、ペン先に対するあなたの理解です。これらはオブジェクト グラフを保存します。nib がロードされると、グラフはアーカイブされず、その中の各オブジェクトがインスタンス化されます。グラフに同じオブジェクトが 2 つある場合、1 つのインスタンスへの 2 つの参照ではなく、 2 つのインスタンスになります。複数のビューをドラッグする場合も同じで、複数のインスタンスUIView(およびサブクラス) が作成されますが、これはまさに期待どおりです。

nib でできる/できないこととコードでしなければならないことの境界と、それらすべてがどのように適合するかを学ぶことは、努力する価値があります。

于 2012-08-08T08:32:58.847 に答える
1

面白い !
シングルトンアプローチを使用してみてください。このリンクを確認してくださいhttp://www.duckrowing.com/2010/05/21/using-the-singleton-pattern-in-objective-c/
このアプローチを使用すると、次のようなインスタンスを作成できます。アプリケーションのライフサイクル全体で利用可能

于 2012-08-09T17:17:32.653 に答える