ios4 - 如何在按下按钮后每秒必须播放简短声音的情况下释放AVAudioPlayer对象

标签 ios4 audio avaudioplayer autorelease

我有以下问题使我发疯。
用户按下按钮后,我的应用必须每秒播放一次滴答声,持续指定次数(例如5次)。

我用这个:
for (int w=1; w<=5; w++) {
[NSThread detachNewThreadSelector:@selector(tic) toTarget:self withObject:nil];
[NSThread sleepForTimeInterval:1.0];
}

哪里:
- (void)tic {
NSAutoreleasePool *ticPool = [[NSAutoreleasePool alloc] init];
player_tic = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"tick" ofType:@"aif"]] error:nil];
[player_tic setDelegate:self];
[player_tic play];
[ticPool drain];
}

和:
- (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *)player_tic successfully:(BOOL)flag {
NSLog(@"Audio finished playing.");
[player_tic release];
}

一切似乎正常。我的问题是该对象最后一起释放。
我需要在每播放一次声音后,必须立即释放相关的“player_tic”。

其他资讯:

在.m中: @synthesize player_tic;
在.h中: @interface myController : UIViewController {
...
AVAudioPlayer *player_tic;
}
@property (nonatomic, retain) AVAudioPlayer *player_tic;

最重要的是,我在编译中有以下警告: local declaration of 'player_tic' hides instance variable
请帮我!
提前非常感谢您。

-卡洛

最佳答案

我发现System Sound Services比AVAudioPlayer更敏感。

它还解决了由 Controller 的keep属性引起的释放问题。阅读有关内存管理的引用手册,以获取有关保留/释放的更多信息。

关于ios4 - 如何在按下按钮后每秒必须播放简短声音的情况下释放AVAudioPlayer对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4569495/

相关文章:

iphone - 如何获取准确的当前日期

java - 我想在 .wav 中以 8000hz 的采样率在 android 手机中录制 6 秒的声音

javascript - 闪存录音,然后上传到服务器

ios - iPhone 7 iOS 10 上无法播放声音

error-handling - “NSError”无法转换为 'AutoreleasingUnsafePointer<NSError?>'

iphone - AVAssetExportSession dealloc 在 iOS 4.3 中崩溃

iphone - 线程1程序收到信号SIGABRT

ios - 在 iOS 上隐藏下一首/上一首轨道控件

iphone - 从 iPhone 应用程序以编程方式调用电话并在结束通话后返回应用程序

mp3 播放期间的 Android 均衡器