libspotifyを使用する場合、プレイリストを調べてトラックに関する情報を取得することにより、プレイリストの変更に関するコールバックに応答します。
トラックハンドルを取得すると、そのトラックハンドルはいつ無効になりますか?セッションでは、トラックハンドルの特定の値が常に同じトラックを参照すると想定できますか?確実にトラックの参照カウントを手動で増減する必要がありますか?
ありがとうトム
libspotifyを使用する場合、プレイリストを調べてトラックに関する情報を取得することにより、プレイリストの変更に関するコールバックに応答します。
トラックハンドルを取得すると、そのトラックハンドルはいつ無効になりますか?セッションでは、トラックハンドルの特定の値が常に同じトラックを参照すると想定できますか?確実にトラックの参照カウントを手動で増減する必要がありますか?
ありがとうトム
ドキュメントによると:
参照カウントは、libspotifyのすべてのドメインオブジェクトに使用されます。文字列createを含む関数は、参照カウントが事前にインクリメントされたオブジェクトを返します。したがって、値が不要になった場合、各作成には対応するリリースが必要です。
一方、他のアクセサ関数(sp_link_as_artist et al。を含む)は、取得元のオブジェクトから借用した参照を返します。sp_linkからsp_albumを取得すると、参照カウントが明示的にインクリメントされない限り、リンクオブジェクトが解放されるまでアルバムオブジェクトが存続します。
したがってsp_playlist_track
、文字列を含まない呼び出しによってトラックハンドルを取得した場合create
、トラック参照はプレイリストによって所有されます。手動で参照カウントを増やしない限り、プレイリストハンドルが有効であり、プレイリストにトラックが含まれていることを確認している間のみ、それが有効であることを確認できます。
同様に、プレイリストコンテナから取得したプレイリストは、コンテナの存続期間のみ有効であり、存続期間が短い場合があります。
実際には、コールバックから戻る前、またはsp_session_process_eventsを再度呼び出す前に、トラックへの参照を追加する必要があると思います。親オブジェクトがその時点より前に存続していることに依存することは問題ありませんが、その時点以降は推論がはるかに難しいため、参照を追加し、完了したら後でリリースします。