解放・破棄処理
リソースとは、SDK で生成される全てのインスタンスおよびそのメモリを指します。
Room の管理
Room インスタンスは操作不要な状態になるまでアプリケーションで管理してください。
OK
let room: Room? = try? await .find(by: query) // 入室 let member: LocalRoomMember = try? await room?.join(with: nil) ... // 退出 try? await member.leave() // Roomを含むリソースが不要になった await room.dispose() room = nil
NG
let room: Room? = try? await .find(by: query) // 入室 let member: LocalRoomMember = try? await room?.join(with: nil) ... // 破棄 room = nil // 危険: クラッシュする可能性があります try? await member.publsh(stream, options: nil)
Room を閉じた後の挙動
誰かが明示的に Room を閉じたときに Member が入室していた場合、 Publish と Subscribe を中止して退出します。
Room を閉じた後にそこで生成されたリソースの操作はエラーになります。
SkyWayを終了する
アプリケーションにおいて SkyWay の機能を利用しなくなった場合、Context.dispose() をコールすることで SkyWay サーバーとの通信を切断し、SDK で管理している全てのリソースを破棄します。
事前に、Member の Room 退出処理を行ってください。
また、Context.dispose() をコールした後、それまで生成したリソース(インスタンス)にアクセスしないでください。
アクセスした場合の挙動は未定義でアプリケーションがクラッシュする可能性があります。
dispose() 後に再度 setup(withToken:options:completion:) することで再度 SkyWay サーバーと接続できます。