iOS/OSX 用の XMPP フレームワークを使用して iPhone アプリを開発しており、XEP-0045 拡張 (マルチユーザー チャット) を使用しています。ルームの作成と構成が正常に完了し、他のユーザーを招待してチャットできるようになりました。問題は、作成した部屋を破壊しに行くときに発生します。フレームワーク内で実行されるコードパスをたどり、フレームワークがメソッドを起動しない理由を理解しましたが、私が見ている動作を考えると、どのようにメソッドを起動するかわかりません.
その動作は次のとおりです。
1) [room destroyRoom] を呼び出してルームの破棄をリクエストします
2) 次に、XMPPRoom クラスがその XMPPIDResponse トラッカーをセットアップして、サーバーがルームを正常に削除したことを示す「結果」iq スタンザを監視することを確認します。
3) (ここで問題が発生します) ルームから現在利用できないというプレゼンス スタンザを受け取り (私もルームの占有者であるため)、フレームワークは応答トラッカーをクリアし、-xmppRoomDidLeave: を呼び出します。
4) サーバーは、ルームが正常に削除されたことを示す「結果」の iq スタンザを返しますが、誰も聞いていません。これにより、xmppRoomDidDestroy の呼び出しが失われます。
この動作は、私が XEP-0045 定義で読んだ内容と一致しており、それを考えると、 -xmppRoomDidDestroy: デリゲートがどのように呼び出されるかはわかりません。ここで何か間違ったことをしていますか?