2012-07-05 118 views
0

我正在使用cocoalibspotify進行Spotify iOS應用。SPPlaylistCallbackProxy播放列表:發送到已釋放實例的消息

在我的應用程序的一個點上,我創建了一個新的播放列表並向播放列表中添加了一些曲目。當這樣做時,由於創建的播放列表實例似乎已被釋放,因此我發生了崩潰。

這是代碼的樣子:

[[[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)

編輯:我跑了殭屍工具,看看發生了什麼事情,得到了以下結果時墜毀: Retain/release history of the instance

回答

1

如果您有一個對象(SPTrack等),您可以將其添加到播放列表而無需等待它加載,因爲只加載元數據處理。您可能需要等待播放列表加載,以便知道您使用的索引是否正確(但在此情況下,0將始終有效)。

現在看看你的問題的肉。這很可能是CocoaLibSpotify中的一個錯誤 - 你的代碼看起來很好。

+0

解決https://github.com/spotify/cocoalibspotify/issues/80。 – 2012-08-09 12:48:11

相關問題