我正在将 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 以查看发生了什么,并在崩溃时得到以下结果: