Я использую свойство музыкального проигрывателя для контроллера проигрывателя 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 было решением.Кроме того, доступ к нему осуществляется с предположением, что собственность может отсутствовать.После многих испытаний и года фактического использования его в моем приложении, я думаю, что это было правильное решение.