我有一個需要快速連續播放的16個短聲片段庫。我意識到,實時創建和準備對象實在太難以問及iPhone。我可以將AVAudioPlayer引用存儲在NSMutableArray中並隨意播放它們嗎?
所以相反,在我的應用程序的初始化過程中,我預先創建了一系列AVAudioPlayers
,這樣每個基本上都預先加載了我的16個聲音中的一個,因此它們隨時可以播放。
問題是,爲了保持這個清潔,我想將這些16 AVAudioPlayers
的參考文件存儲在NSMutableArray
中,所以我只需知道它們的陣列位置就可以輕鬆獲得它們。但是,我做的方式崩潰模擬器W /日誌中沒有錯誤消息:
這裏是我當前如何建立的AVAudioPlayer
引用數組:
// (soundPlayers is an NSMutableArray instance var)
soundPlayers = [NSMutableArray arrayWithCapacity:(NSUInteger)16];
for (int i = 0; i < 16; i++) {
NSString *soundName = [NSString stringWithFormat:@"sound-%d", i];
NSString *soundPath = [[NSBundle mainBundle] pathForResource:soundName ofType:@"mp3"];
NSURL *soundFile = [[NSURL alloc] initFileURLWithPath:soundPath];
AVAudioPlayer *p = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFile error:nil];
[soundFile release];
[p prepareToPlay];
[soundPlayers addObject:(id)p];
[p release];
}
再後來我嘗試加載聲音#8並播放:
// (soundPlayer is an AVAudioPlayer instance var)
self.soundPlayer = [soundPlayers objectAtIndex:(NSUInteger)8];
[soundPlayer play];
任何想法?也有人知道,如果任何與XCode一起提供的漂亮的調試工具對這類問題有用嗎?
這是題外話,但你並不需要在'投(ID)p '和'(NSUInteger)16'。請確保查看崩潰日誌。調試器控制檯中沒有顯示任何內容嗎?這從來沒有發生在我身上。 – Yuji 2010-06-19 03:11:14
謝謝!很有幫助。 – todd412 2010-06-19 18:48:12