我在下面几行代码:AVAudioPlayer返回nil随机
NSString *soundPath = [[NSBundle mainBundle] pathForResource:[[soundString componentsSeparatedByString:@"."]objectAtIndex:0] ofType:@"wav"];
NSURL *soundURL_ = [NSURL fileURLWithPath:soundPath];
av_player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL_ error:nil];
这些生产线的一类卡列斯AnimatableObject
我用一个ViewController
约10至30倍。
它在ViewControllers
初始化和加载的前几次完全正常工作。但在切换ViewControllers
一段时间后,我的应用程序崩溃,因为以下行(以前一直有效)现在返回nil。
av_player = [[AVAudioPlayer alloc] initWithContentsOfURL:soundURL_ error:nil];
我检查了soundPath或soundURL_是否为零。但他们没事。完全相同的价值,就像它以前的所有时间一样。
所以,现在我问自己,它怎么会发生,它工作了很多次,并且返回零? 在同一个应用程序中,不关闭并重新启动它。我所做的只是在viewControllers之间切换。 我首先认为这是一个内存问题,但我没有得到任何内存警告。
我真的不知道为什么会发生这种情况。
任何帮助,将不胜感激。 Thx提前, 特立独行。
-------- --------编辑
我现在发现,我得到以下错误:
ImageIO: CGImageRead_mapData 'open' failed '/var/mobile/Applications/F3186E1A-BBC2-47A6-8EF6-90F73C9BD566/huckla_zoo.app/Weiter.png'
error = 24 (Too many open files)
,所以我意识到,我无法打开一个声音文件,当我得到这个错误。 我唯一想知道的事情是: 如何关闭文件句柄? 我不通过[UIImage imageNamed:]
加载图像,但与
[UIImage imageWithContentsOfFile:filename];
我也已经实施了MutableDictionary作为图像缓存其中被清空,当出现内存问题。 有没有其他选项可以让我关闭文件句柄?
来自initWithContentsOfURL的文档:error:method返回值:“如果nil,错误参数包含描述问题的代码”,而不是通过nil传递NSError对象并查看得到的错误,我会再次检查soundPath和soundURL_如果他们不为零 – alhcr
好吧,我更新了这个问题,因为我现在知道是什么导致了崩溃。 thx到alhcr。 – Maverick1st