2
我認爲它與iOS 5中的ARC有關,但是當我在方法中聲明AVAudioPlayer並播放它時,它不會播放。我認爲它會在該方法結束時自動發佈,因爲我不記得這發生在iOS5之前。如果我使它成爲一個全局變量,它可以正常工作。任何方式來使用本地實例?如何在ios5中播放AVAudioPlayer本地方法?
我認爲它與iOS 5中的ARC有關,但是當我在方法中聲明AVAudioPlayer並播放它時,它不會播放。我認爲它會在該方法結束時自動發佈,因爲我不記得這發生在iOS5之前。如果我使它成爲一個全局變量,它可以正常工作。任何方式來使用本地實例?如何在ios5中播放AVAudioPlayer本地方法?
使它成爲一個保留的屬性,並讓您的班級成爲代理人,這樣您就可以在完成遊戲後進行清理。在您的標題:
@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;
}
一個好處大約有它作爲一個屬性是你可以打斷它,如果你需要:
-(void)someInterruptionOccurred {
[self.player stop];
}
但是它仍然是一個全局變量。我試圖在方法中聲明它。 – Marty
屬性不是全局變量。它是它聲明的實例的成員。你爲什麼要在方法中聲明它? –
是的,這就是我的意思,實例不是全球的...全球的類。我不需要在方法中聲明它,我只是認爲自從有了之前就有辦法做到這一點。 – Marty