为啥没有播放声音?

Posted

技术标签:

【中文标题】为啥没有播放声音?【英文标题】:Why is the sound not playing?为什么没有播放声音? 【发布时间】:2011-02-04 20:14:59 【问题描述】:

这是我的代码:

按下按钮:

-(void)mediaPicker: (MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection 
    [self dismissModalViewControllerAnimated:YES];
self.selectedSong = mediaItemCollection;
    NSLog(@"Selected song: %@", self.selectedSong);

稍后:

-(void)waitUntilSpeechIsDone 
    NSLog(@"Test");
    if ([audio isEqualToString:@"Music"]) 
    if ([musicWhenToStart isEqualToString:@"Before"]) 
        NSLog(@"Test");

        NSLog(@"Selected song: %@", self.selectedSong);
        [self.musicPlayer stop];
        [self.musicPlayer setQueueWithItemCollection:self.selectedSong];
        [self.musicPlayer play];
    
       

定义为:

@interface RewriteViewController : UIViewController <MPMediaPickerControllerDelegate> 

    MPMediaItemCollection *selectedSong;


@property(nonatomic,retain) MPMusicPlayerController *musicPlayer;
@property(nonatomic,retain) MPMediaItemCollection *selectedSong;


MPMediaItemCollection *selectedSong;

然后两者都合成在.m文件中。

好的,所以上半场顺利通过。 NSLog 返回类似“Selected song:”然后 NSLog 返回“Test”,(我把它放在那里,所以我知道它有那么远,以防它由于某种原因在下一行崩溃)。然后当它到达下一行时,它会返回“Selected song: (null)”。

有什么想法吗?

编辑:两者都在 dealloc 中发布。

【问题讨论】:

如果可以的话,请包括崩溃的堆栈跟踪。 没有崩溃。它只是返回为 null,因此音频不会播放。 【参考方案1】:

查看您的界面文件,您似乎在声明MPMediaItemCollection *selectedSong; 两次:/ 我不确定这是否是发布问题时的拼写错误,但这可能与它有关。您的崩溃很可能与 selectedSong 在您不期望的某个时间点被释放有关,而错误的声明可能会导致这种情况。

【讨论】:

我注释掉了最后一个。它仍然返回为 null。 您没有发布selectedSong 或在您的应用程序的其他任何地方使用它?这都在同一个班级,对吗? RewriteViewController 该应用程序还可以选择执行以下代码,但始终为 1 或其他。这样做没有问题。这一切都在 RewriteViewController 中,是的。 if ([musicWhenToStart isEqualToString:@"Start"]) [musicPlayer stop]; NSLog(@"selected song: %@", selectedSong); [musicPlayer setQueueWithItemCollection:self.selectedSong]; [musicPlayer play]; 嗯,我会尝试在调试器上运行您的应用程序,并在整个应用程序生命周期中跟踪 selectedSong 的值。确保它没有在某处失效/发布。

以上是关于为啥没有播放声音?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 UILocalNotification 没有播放任何声音?

为啥我的 SoundPool 声音没有在 onClick() 中同时播放?

为啥我的 SoundPool 声音第一次在 Android 上没有播放?

为啥播放视频文件只有声音没有图像

为啥 PyGame 不播放声音

为啥我的 Java 应用程序没有在每个循环中播放声音?