【问题标题】:Callbacks on SPPlaylist are not called不调用 SPPlaylist 上的回调
【发布时间】:2012-06-18 21:25:59
【问题描述】:

我在接收播放列表上的更改(添加、删除和移动的曲目)时遇到问题。

我有以下流程:

  • 创建 SPSession
  • 登录
  • 从 URI 创建播放列表

然后我通过添加、删除和移动一些曲目来更改 Spotify 桌面应用程序中的播放列表。通过我的 SPPlaylistDelegate 上的回调通知正好 2 个更改。但随后它停止了。不再通知播放列表中的任何更改。这在旧版本的 CocoaLibSpotify 上运行良好。

谁能帮我解决这个问题?

【问题讨论】:

    标签: objective-c cocoa cocoalibspotify-2.0


    【解决方案1】:

    没有代码我无法具体回答,但有几点需要注意:

    首先,简单的东西:

    1) 示例应用中是否会出现这种情况? 2) 你是否对播放列表进行了强烈的引用,以免它被释放?

    更高级:

    3) 您确定事件没有被合并为一个封装多个操作的更改吗? 4) 您是否正在检查播放列表的items 属性——它们是否同步? 5)您等待更改多长时间?他们可能需要一些时间才能完成 - 仅仅因为一个事件是立即发生的并不意味着下一个事件将会发生。

    但我真的需要看一些代码才能正确回答这个问题。

    【讨论】:

    • 感谢您的反馈。 1) 这是否发生在示例应用程序中?是的。我更改了 Guess The Intro 以在用户播放列表之一发生更改时接收回调。因此,我在加载播放列表后在 waitAndFillTrackPool 中添加了此代码 sn-p: for(SPPlaylist * pl in loadedPlaylists) { NSLog(@"setting delegate on playlist '%@'", pl.name); pl.delegate = 自我; }
    • 我实现了以下回调: - didRemoveItems - didAddItems - didMoveItems 最多调用 2 个回调,即使在等待一个多小时后也是如此。
    • 2) 您是否保留了对播放列表的强引用以使其不会被释放?是 3) 你确定事件没有被合并成一个包含多个动作的更改吗?我确定 4) 您是否正在检查播放列表的 items 属性——它们是否同步?我应该如何检查项目? 5)您等待更改多长时间?几个小时......我希望这可能会导致解决方案。
    • 我只是在玩我的 Guess The Intro 版本。我有 3 个播放列表。更改播放列表 1 时,最多调用播放列表委托上的 2 个回调。但是你猜怎么着,播放列表 1 上的更改不再被通知后,播放列表 2 和 3 上的更改具有相同的结果:因此每个可用播放列表的最多 2 个更改都会在委托上通知。
    • 4) 您是否正在检查播放列表的项目属性——它们是否同步?我应该如何检查项目? — items 属性上的 KVO。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 2019-06-26
    • 1970-01-01
    • 2021-11-27
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多