I was struggling with the same problem. The thing is
-(void)playerStateChanged:(DeezerPlayerState)playerState
with player state in
DeezerPlayerState_Finished
gets called from another thread (not main thread) and the Deezer SDK is the one to blame.
Solution is simple, in your switch statement make sure [self.grabber grabStream] is invoked using 'performSelectorOnMainThread', like so
[self.grabber performSelectorOnMainThread:@selector(grabStream) withObject:nil waitUntilDone:false];