libspotify的歌曲寿命



使用libspotify时,我通过浏览播放列表并获取有关曲目的信息来响应有关播放列表更改的回调。

当我得到一个轨道句柄时,该轨道句柄何时失效?我是否可以假设在会话中,轨道句柄的给定值总是指向相同的轨道?我需要手动增加和减少曲目的refcount来确定吗?

谢谢汤姆

根据文档:

引用计数用于libspotify中的所有域对象。包括字符串create在内的函数将返回一个引用计数预先递增的对象。因此,当不再需要该值时,每个create都必须有一个相应的release。

另一方面,其他访问器函数(包括sp_link_as_artist等)返回从对象中借用的引用。从sp_link中检索sp_album将使该album对象一直存在到链接对象被释放,除非它的引用计数显式地增加。

所以如果你通过调用sp_playlist_track得到一个音轨句柄——它不包含字符串create——音轨引用由播放列表拥有。只有当你确定播放列表句柄有效时,你才能确定它仍然有效,并且你确定播放列表仍然包含曲目,除非你手动增加其引用计数。

同样地,从播放列表容器中获得的播放列表也只能和容器一样长,也可能没有容器那么长。

在实践中,我认为您应该在从回调返回或再次调用sp_session_process_events之前添加对轨道的引用。在此之前,依靠父对象使其保持活动状态是可以的,但在此之后,就很难进行推理了,所以只需添加一个引用,然后在完成后释放它。

相关内容

  • 没有找到相关文章

最新更新