iphone - iOS5のメソッドにローカルでAVAudioPlayerを再生する方法

iphone ios avaudioplayer ios5 automatic-ref-counting

iOS 5のARCに関係していると思いますが、メソッドでAVAudioPlayerを宣言して再生すると、再生されません。 iOS5より前に起こったことを覚えていないので、メソッドの最後に自動的に解放されると思います。それをグローバル変数にすると、うまく機能します。ローカルインスタンスを使用する方法はありますか?
答え
それを保持プロパティにし、クラスをデリゲートにして、再生が終わったらクリーンアップできるようにします。ヘッダー:

@interface MyClass : NSObject <AVAudioPlayerDelegate>
@property(strong)AVAudioPlayer *player;


次に、それを使用するとき:

self.player = [AVAudioPlayer alloc] initWithContentsOfURL:URL error:&err];
[player setDelegate:self];


デリゲートメソッドでクリーンアップします。

-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)playedSuccessfully {
    self.player = nil;
}


プロパティとして持つことの1つの良い点は、必要に応じて中断できることです。

-(void)someInterruptionOccurred {
    [self.player stop];
}
関連記事

android - iPhoneまたはAndroidでUIプロトタイプを表示するためのアプリはありますか? [閉まっている]

iphone - iphoneスピーチをテキストに、またはその逆をsiriで

iphone - PDFからUnicode CMapへのグリフマッピング

iphone - 3D効果で画像を回転させる方法は?

iphone - 選択した状態のreversesTitleShadowWhenHighlightedのUIButtonアナログ

iphone - iOS 5のデバッグシンボルを紛失しました。どうすれば元に戻すことができますか?

iphone - UIIMAGE + UIKIT + iphoneの色を変更する

iphone - iPhone-値に基づくNSDictionaryのソート[重複]

iphone - テーブルビューにUITableViewCellAccessoryDe​​tailDisclosureButtonを追加する-初心者

iphone - iPhoneおよびiPadの<video>タグにどのビデオ形式を使用すればよいですか?