我正在使用iPod播放器控制器的音乐播放器属性.
// .h @property (nonatomic,retain) MPMusicPlayerController *ipodplayer; // .m ipodplayer = [MPMusicPlayerController iPodMusicPlayer]; NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; [notificationCenter addobserver:self selector:@selector(changedplaybackState:) name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:ipodplayer]; [notificationCenter addobserver:self selector:@selector(changedNowPlayingItem:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:ipodplayer]; [ipodplayer beginGeneratingPlaybackNotifications];
在后台处理中,如果iPod播放器应用程序被终止,控制台将打印出来:
MediaPlayer: Message playbackState timed out.
如果没有崩溃(或冻结,降低性能),则通知不再发送到我的观察方法.我仍然可以发送消息:
[ipodplayer pause]; [ipodplayer play]; [ipodplayer skipToNextItem]; [ipodplayer skipToPrevIoUsItem];
但不能收到任何通知
我的问题是:
>有没有办法重新分配,在运行时重新加载指针?如何恢复属性就像首次启动时一样?
>我如何抓住这个消息:“MediaPlayer:消息回放状态超时.”在控制台输出?这不像使用NSLog.
感谢你们对我的帮助.
更新:
似乎使用assign或weak的ipodplayer属性是解决方案.此外,访问它是通过假设属性可能不在那里完成.经过多次试用和一年的实际使用,在我的应用程序,我认为这是正确的解决方案.