2012-03-13 12 views
1

私は、ハードウェアに接続しているiOSの実装に取り​​組んでいます。そのため、外部アクセサリーフレームワークを使用する必要があります。デバイスと対話するには、EAAccessoryオブジェクトとの通信を処理するクラスが必要です。これを行うには、EAAccessoryDelegateプロトコルでデバイス接続クラスを定義する必要があります。EAAccessoryDe​​legate内の - accessoryDidDisconnect:メソッドの目的は何ですか?

EAAccessoryDelegateプロトコルは1 method--

– accessoryDidDisconnect:(EAAccessory *)accessoryが含まれています。

アップルドキュメント状態:

EAAccessoryDelegateプロトコルが関連EAAccessoryオブジェクトが切断されたとき 通知を受信するための単一のメソッドを定義します。 このメソッドの実装はオプションです。

クラスをインスタンス化するときに、NSNotificationCenterシステムで独自のメソッドを登録できます。デバイス接続またはデバイス切断のいずれかのイベントがある場合は、必要に応じてイベントを処理できます。デバイス切断イベントが発生すると、- accessoryDidDisconnect:の目的は、クラスにまったく同じ機能とデータを提供するため、無意味になります。

さらに、外部アクセサリフレームワークでの作業に関して見つかった例では、NSNotificationCenterサブスクリプションメカニズムを使用してデバイス接続の変化を検出する例を示しています。

実際に使用されていないときの– accessoryDidDisconnect:メソッドのポイントは何ですか?はい、それは実装できますが、上記のように、すべての形式のドキュメントでは、NSNotificationCenterを通じてこれらのタイプの接続の変更を管理することを推奨しています。

私はこれがニットピカピカの質問だと知っていますが、私は非常に興味があります。

答えて

1

これは、非常に一般的なNSNotificationCenter通知のショートカットを提供するために、Appleにとってかなり一般的なデザインパターンです。 OS Xでは、多くのNSWindow通知でこれを行い、その場合はNSNotificationの内容を渡します。

基本的に、オブザーバーを追加したり削除したりすることなく、通知を簡単に実装できます。

特に、これはEAAccessoryオブジェクトが作成された後にのみ使用されます(アクセサリが接続された後にのみ発生します)。このため、現在はconnectメソッドを使用できません。

+0

私はこれが当てはまると仮定しましたが、似ていない '-accessoryDidConnect'が存在しないのですか?真実を伝えたいのですが、定義されたデリゲートメソッドへの呼び出しを使用しますが、一貫性のため通知システムを使用しています。 – RLH

+1

問題は、アクセサリが接続されている場合にのみEAAcessoryオブジェクトが存在するため、その場合のデリゲートは何もないことです。 – gaige

関連する問題