2011-03-30 71 views
0

这是我的按钮的标题。当我触摸特定按钮时,我的应用程序崩溃

IBOutlet UIButton *buttonOneOne; 

} 

- (IBAction)buttonOneOne:(id)sender; 

@property (nonatomic, retain) IBOutlet UIButton  *buttonOneOne; 

这就是我把我的.m文件为它

- (IBAction)buttonOneOne:(id)sender { 

    NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:@"95" ofType:@".wav"]; 

NSError *activationError = nil; 
NSError *audioPlayerInitError = nil; 
[[AVAudioSession sharedInstance] setActive: YES error:&activationError]; 

NSURL *newURL = [NSURL fileURLWithPath:soundFilePath]; 
AVAudioPlayer *musicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:newURL error:&audioPlayerInitError]; 

[musicPlayer prepareToPlay]; 
[musicPlayer setVolume:.8]; 
[musicPlayer setNumberOfLoops:-1]; // -1 means play indefintely 
[musicPlayer setDelegate: self]; 
[musicPlayer play]; 

} 

为什么会崩溃?

+0

为什么@属性(非原子,保留)IBOutlet中的UIButton * buttonOneOne; ?你可以在你的IBAction实现文件中放置断点吗?还可以在这里发布一些崩溃日志。 – 0x8badf00d 2011-03-30 20:37:54

+0

你应该使用代码格式选项使代码更具可读性 – 2011-03-30 20:38:32

+0

我把属性放在那里,因为苹果在他们的示例代码中使用了它,但我并没有完全理解为什么它在那里,是的,让我这样做 – luca590 2011-03-30 20:39:53

回答

1

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter'表示找不到您正在引用的文件。

指定文件扩展名时,不应使用点。

变化ofType:@".wav"
ofType:@"wav"

NSBundle Class Reference

+0

谢谢!它的作品,我很开心:)哈哈。我想要考虑NSURL,为什么AVAudioPlayer似乎没有考虑到它。谢谢 – luca590 2011-03-30 21:15:33

0

你应该发布一些控制台输出(可能是一个堆栈跟踪),它会帮助我们更多。

崩溃,我可以从这个代码中看到可能的原因:

  1. 你有没有decalring它的@propertysynthesize你的按钮?

  2. 95.wav是否存在于您的Xcode项目中(您是否导入了它)?

  3. 您使用Interface Builder吗?如果是这样,请检查你的IB项目是否有旧的IBOutlets和IBActions,因为一旦你重命名了一个函数或者什么东西,你一定会得到指向旧代码的界面元素。

+0

是的1和2,我会做第三次,让我继续前进,并在堆栈跟踪,对不起,我没有发布之前 – luca590 2011-03-30 20:41:58

+0

这个GDB被配置为“x86_64苹果达尔文”.sharedlibrary apply-load-rules全部 附加到进程32811. 2011-03-30 16:51:37.779 DubStep [32811:207]由于未捕获的异常'NSInvalidArgumentException',原因:'*** - [NSURL initFileURLWithPath:]:零字符串参数'终止应用程序 2011-03-30 16:51:37.781 DubStep [32811:207] Stack:( ) – luca590 2011-03-30 20:53:49

+0

kill Error resett ing ObjC调试器模式:被调试的程序在从GDB调用的函数中发出信号。 GDB已将上下文恢复到调用之前的状态。 要更改此行为,请使用“set unwindonsignal off” 对包含函数(gdb_objc_endDebuggerMode)的表达式的评估将被废弃(gdb) – luca590 2011-03-30 20:55:04

相关问题