Я использую свойство музыкального проигрывателя для контроллера проигрывателя 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];
, но не могу получать уведомления
Мои вопросы:
Спасибо за помощь.
ОБНОВЛЕНО:
Кажется, что использование assign
или слабого
для свойства ipodPlayer было решением. Кроме того, доступ к нему осуществляется с предположением, что собственность может отсутствовать. После многих испытаний и года фактического использования его в моем приложении, я думаю, что это было правильное решение.