0

我正在将 cocoalibspotify 用于 Spotify iOS 应用程序。

在我的应用程序中,我正在创建一个新的播放列表并向播放列表中添加一些曲目。这样做时,我遇到了崩溃,因为创建的播放列表实例似乎已被释放。

这是代码的样子:

[[[SPSession sharedSession] userPlaylists] 
 createPlaylistWithName:playlistName 
 callback:^(SPPlaylist *createdPlaylist) {
     if (createdPlaylist) {
          [SPAsyncLoading waitUntilLoaded:createdPlaylist 
                                     then:^(NSArray *playlists) {
                                        // Load all tracks using the URI's and add them to the playlist
                                        SPPlaylist *playlist = [playlists objectAtIndex:0];
                                        for (NSString *trackUri in trackUris) {
                                            [[SPSession sharedSession] 
                                                trackForURL:[NSURL URLWithString:trackUri] 
                                                callback:^(SPTrack *track) {
                                                if (track != nil) {
                                                    [SPAsyncLoading 
                                                     waitUntilLoaded:track 
                                                     then:^(NSArray *tracks) {
                                                         [playlist addItems:tracks atIndex:0 callback:NULL];
                                                     }];
                                                }
                                            }];
                                        }
                                    }];
    }}];

这是日志消息:

*** -[SPPlaylistCallbackProxy playlist]: message sent to deallocated instance 0x100e0120

我尝试在课堂上保留播放列表,但我仍然遇到同样的问题。我在这里遗漏了一些明显的东西吗?

额外问题:在创建播放列表或加载曲目(即使用-trackForURL:callback)之后,我必须使用SPAsyncLoading,还是对象总是已经加载?

(注意:我在我的项目中使用 ARC。)

编辑:我在仪器中运行 Zombies 以查看发生了什么,并在崩溃时得到以下结果: 实例的保留/释放历史

4

1 回答 1

1

如果您有一个对象(SPTrack等),您可以将其添加到播放列表而无需等待它加载,因为加载只处理元数据。您可能希望等待播放列表加载,以便知道您使用的索引是正确的(尽管在这种情况下0将始终有效)。

现在调查你问题的实质。这很可能是 CocoaLibSpotify 中的错误 - 您的代码看起来不错。

于 2012-07-05T10:27:38.703 回答