当我尝试使用 iPhone SDK 的 Finch 库播放声音时,为啥我的应用程序会崩溃?

Posted

技术标签:

【中文标题】当我尝试使用 iPhone SDK 的 Finch 库播放声音时,为啥我的应用程序会崩溃?【英文标题】:Why is my app crashing when I try to play a sound using the Finch library for iPhone SDK?当我尝试使用 iPhone SDK 的 Finch 库播放声音时,为什么我的应用程序会崩溃? 【发布时间】:2012-08-14 03:13:35 【问题描述】:

我完全按照自述文件中的说明进行操作,但由于某种原因,在我的应用程序中,每次我点击与代码对应的 UIButton 以播放声音“[soundA play]; 应用程序只是崩溃而没有任何详细信息错误描述,除了 lldb。我使用 Finch,因为它使用 OpenAL 播放音频,并且我需要将 OpenAL 用于我正在制作的应用程序类型,因为 AVAudioPlayer 或系统声音不适用于我正在制作的内容。这里是我正在使用的代码。

主文件:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
soundFactory = [[FIFactory alloc] init];
engine = [soundFactory buildSoundEngine];
[engine activateAudiosessionWithCategory:AVAudioSessionCategoryPlayback];
[engine openAudioDevice];
soundA = [soundFactory loadSoundNamed:@"1.caf" maxPolyphony:16 error:NULL];
soundB = [soundFactory loadSoundNamed:@"2.caf" maxPolyphony:16 error:NULL];
soundC = [soundFactory loadSoundNamed:@"3.caf" maxPolyphony:16 error:NULL];
soundD = [soundFactory loadSoundNamed:@"4.caf" maxPolyphony:16 error:NULL];


- (void)viewDidUnload

[super viewDidUnload];
// Release any retained subviews of the main view.


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
 else 
    return YES;


- (IBAction) PlaySoundA [soundA play];
- (IBAction) PlaySoundB [soundB play];
- (IBAction) PlaySoundC [soundC play];
- (IBAction) PlaySoundD [soundD play];

@end

头文件:

#import <UIKit/UIKit.h>
#import "FISoundEngine.h"
#import "FIFactory.h"
#import "FISound.h"

@interface ViewController : UIViewController 
FIFactory* soundFactory;
FISoundEngine* engine;
FISound* soundA;
FISound* soundB;
FISound* soundC;
FISound* soundD;


@end

任何帮助将不胜感激!谢谢!

【问题讨论】:

【参考方案1】:

声音播放器很可能找不到您的声音文件。尝试右键单击音频文件并在查找器中选择视图。确保文件实际上在您的项目目录中,而不是

【讨论】:

文件添加到项目中,复制到项目资源文件夹中,并添加到目标中。我还运行了一些代码来搜索文件,因为我认为这也是问题所在,但应用程序可以找到文件并使用其他音频框架播放它们,但我需要使用 OpenAL 和 Finch 来播放这些文件。 您是否通过界面构建​​器中的连接检查器将 UIButton 链接到 XIB 文件中的按钮? 是的,如果没有链接,那么它就不会崩溃,因为它不会调用导致应用崩溃的方法

以上是关于当我尝试使用 iPhone SDK 的 Finch 库播放声音时,为啥我的应用程序会崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone ARC 和 Facebook SDK

应用程序崩溃 - 内存警告 Iphone SDK

iphone sdk 3.2 到 4.0 笔尖编辑

iphone sdk 值从给定 exc 错误访问的数组中删除

iPhone SDK:使用新行插入和更新 UITableView

使用 ZBar SDK 的 iPhone 应用程序的验证错误