2

Xcode でストーリーボードを使用してアプリを作成しました。アプリには、TBC から制御される UITabBarController (TBC) といくつかの UIViewControllers (VC) が含まれています。

AppDelegate で、着信 MIDI メッセージ (CoreMidi) をリッスンするオブジェクト (「myMidi」と呼びます) を作成します。したがって、この myMidi-Object のインターフェイスを VC に実装します。Interface Builder (IB) の「関係」オプションを使用して、ビューを TBC に接続しました。

IB で作成されたすべての VC は、自分の VC クラスのインスタンスです。前に述べたように、このクラスでは、AppDelegate で作成した myMidi-Object のインターフェイスを実装します。したがって、すべての VC インスタンスは myMidi-Object のアドレスを保持し、AppDelegate で作成された唯一の参照が必要になります。

ですから、現在表示されている現在の VC または TBC にアクセスして、この参照を VC クラスに渡すにはどうすればよいのでしょうか?

または、他にどのようにこの問題を解決できますか。AppDelegateのどこかでこれを行うべきだと思いますか、それともTBCにも参照を保持して、VCが作成されるときにすべての新しいVCに渡す必要があります!?

4

2 に答える 2

1

私の理解が正しければ、MyMidiクラスの現在の (唯一の?) インスタンスを VC で利用できるようにしたいですか?

インスタンスが 1 つしかない場合はMyMidi、シングルトン クラスを作成し、+ (MyMidi *)sharedInstance;常に同じオブジェクトを返す (そして遅延初期化する) クラス メソッドを与えることを検討してください。そうすれば、どこからでもアクセスできます。

Cocoa/Cocoa Touch でシングルトンを実装する方法については、この質問を参照してください。

于 2012-05-02T13:22:07.070 に答える
0

nsdefaultssetObjec:forKey:を使用してオブジェクトを渡し、必要な場所に取得します。または、appdelegate でプロパティを作成し、

AppDelegate* appDelegate = (TappAppDelegate*) [[UIApplication sharedApplication] delegate];
appDelegate.object = yourObject;
于 2012-05-02T13:24:11.250 に答える