Spotify SPPlaylistCallbackProxy播放列表:发送到解除分配实例的消息
我正在为Spotify iOS应用程序使用cocoalibspotify 在我的应用程序中,我创建了一个新的播放列表,并向播放列表中添加了许多曲目。这样做时,我会遇到崩溃,因为创建的播放列表实例似乎已被释放 这是代码的样子:Spotify SPPlaylistCallbackProxy播放列表:发送到解除分配实例的消息,spotify,cocoalibspotify-2.0,Spotify,Cocoalibspotify 2.0,我正在为Spotify iOS应用程序使用cocoalibspotify 在我的应用程序中,我创建了一个新的播放列表,并向播放列表中添加了许多曲目。这样做时,我会遇到崩溃,因为创建的播放列表实例似乎已被释放 这是代码的样子: [[[SPSession sharedSession] userPlaylists] createPlaylistWithName:playlistName callback:^(SPPlaylist *createdPlaylist) { if (cre
[[[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。)
编辑:我在instruments中运行Zombies以查看发生了什么,当它崩溃时得到了以下结果:
如果您有一个对象(SPTrack
等),您可以将其添加到播放列表中,而无需等待加载,因为加载只处理元数据。您可能需要等待播放列表加载,以便知道所使用的索引是正确的(尽管在这种情况下,0
始终有效)
现在来看看你问题的实质。这很可能是CocoaLibSpotify中的一个bug——您的代码看起来不错