iOS 音樂播放器不播放問題

記錄一個(gè)兩年前發(fā)生的尷尬的問題,不論是系統(tǒng)自帶的播放器,還是第三方,都會(huì)出現(xiàn):
需求很簡(jiǎn)單,要求播放器播放一段音頻文件,先展示錯(cuò)誤代碼

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *str=[[NSBundle mainBundle] pathForResource:@"BraveHeart" ofType:@"mp3"];
    NSURL *url=[NSURL fileURLWithPath:str];
    AVAudioPlayer *player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
    [player play];
    
}

注:重點(diǎn)不是播放器的各種功能,就不弄的那么復(fù)雜了,一切從簡(jiǎn)
然后,發(fā)現(xiàn)沒有聲音,這個(gè)問題當(dāng)時(shí)懵了,沒有找到頭緒,各種亂世,然后試著把問題解決了,解決辦法如下:

@interface ViewController ()
@property (strong ,nonatomic)AVAudioPlayer *player;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *str=[[NSBundle mainBundle] pathForResource:@"BraveHeart" ofType:@"mp3"];
    NSURL *url=[NSURL fileURLWithPath:str];
    _player=[[AVAudioPlayer alloc]initWithContentsOfURL:url error:nil];
    [_player play];
    
}

辦法一目了然,就是把這個(gè)播發(fā)器變量變成全局的,那時(shí)候突然想起來,最早老師教的時(shí)候,就說過,一定要把播放器聲明成全局的,當(dāng)時(shí)問原因,老師也沒說,他把問題歸結(jié)為Xcode的bug,記住就行了,懵懵懂懂的我就信了,也沒有多想,當(dāng)時(shí)用的是Xcode5,現(xiàn)在馬上都Xcode11了,這個(gè)問題還是有,后來仔細(xì)一想,這個(gè)老師真是誤人子弟啊
我當(dāng)時(shí)也是沒有認(rèn)真的求學(xué)態(tài)度,其實(shí)稍微一想,這個(gè)問題并不難,如果,你把這個(gè)player聲明成局部變量,當(dāng)方法執(zhí)行完畢的時(shí)候,這個(gè)變量被釋放掉了,而[player play]又是個(gè)持續(xù)的過程,變量被釋放掉了,還怎么播放,所以,即使是到了Xcode50,你也得聲明成全局的,所以有問題一定要考慮個(gè)為什么,要不,永遠(yuǎn)都是跟剛學(xué)出來沒區(qū)別,科科!
相同考慮的還有很多,類似的就是地圖定位啊,導(dǎo)航啊之類的!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容