NSURL *url = [[NSURL alloc]initWithString:@"http://localhost/social-alarm1/musics/sampleMusic.mp3"]; AVPlayer *player = [[AVPlayer alloc]initWithURL:url]; [player play];
*AVFoundation/AVFoundation.hは.hファイルで読み込みをしています。
これをこうすると僕の場合は解決しました。
.mファイル
@interface ViewController () { AVPlayer *player; } @end @implementation ViewController - (void)viewDidLoad {/*省略。何もいじってません*/} - (void)didReceiveMemoryWarning {/*省略。何もいじってません*/} - (IBAction)startMusic:(id)sender { NSURL *url = [[NSURL alloc]initWithString:@"http://localhost/social-alarm1/musics/sampleMusic.mp3"]; player = [[AVPlayer alloc]initWithURL:url]; [player play]; } @end言葉で書くとするなら、「AVPlayerのインスタンスを.mファイルの最初のinterfaceで書くとなぜかうまくいく」ですね
ARCがplayerインスタンスを開放してしまうからが原因ですね。下のはメンバ変数にしてスコープ(playerインスタンスの生存範囲)が変わったので大丈夫になってます。
ReplyDelete斉藤さん、コメントありがとうございます!
ReplyDeleteまた、返信遅くなってしまって申し訳ありません。完全に僕の過失です。
なるほど、そうなのですね。僕はxcode4から始めたのでARCはそこまで気にしてなかったのですが、それが今回は仇となったようですね。
初めてのコメントありがとうございます!