您好 我有一个名为root的类:
在root.h
: -
#import "UIKit/UIKit.h"
#import "AVFoundation/AVFoundation.h"
#import "AudioToolbox/AudioToolbox.h"
@interface root : UIView {
}
+(void)somefunction:(BOOL) sf;
@end
在root.m中somefunction
的定义如下
-(void)somefunction:(BOOL) sf {
//AVAudioPlayer *myExampleSound; //this variable can be named differently
if ( issoundon==TRUE) {
NSString *path =[[NSBundle mainBundle] pathForResource:"bg" ofType:@"wav"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID(
(CFURLRef) [NSURL fileURLWithPath:path], &soundID);
AudioServicesPlaySystemSound(soundID);
}
else{
NSString *path =[[NSBundle mainBundle] pathForResource:nil ofType:@"wav"];
SystemSoundID soundID;
AudioServicesCreateSystemSoundID(
(CFURLRef) [NSURL fileURLWithPath:path], &soundID);
AudioServicesPlaySystemSound(soundID);
}
现在我已经在另一个班级导入了root.h
,我正在调用“somefunction”,如下所示
bool abc=true;
[root somefunction:true];
但此时我的应用程序终止(崩溃)。
基本上我正在尝试将背景音乐设置到我的应用程序(随着游戏的开始),并且在游戏中间我允许用户切换声音。(即使我在调用代理中的函数也崩溃了图。)
请告诉我发生了什么错误因为我的代码编译正确(尽管有一些警告)。
答案 0 :(得分:1)
当然,您的代码编译成功。但你知道吗?您的代码中存在拼写错误导致程序崩溃。 永远不要因为编译成功而假设您的代码没有拼写错误。
在root.m
文件中,您有:
-(void)somefunction:(BOOL) sf {
它应该是+
,而不是-
,就像在您的标头文件中一样:
+(void)somefunction:(BOOL) sf {
C类型bool
和Objective-C类型BOOL
之间可能存在差异,但我对此不太确定:
bool abc=true; // Shouldn't this be BOOL abc = YES, and
[root somefunction:true]; // shouldn't you be passing abc here?
答案 1 :(得分:0)
您的代码不完整,没有上下文,很难说出错误是什么。但是:
issoundon
任何地方但主要是,我认为你的问题在这里:
(nil).wav
的文件?我建议您提供崩溃转储和错误日志,以帮助人们回答此问题。
答案 2 :(得分:0)
“但此时我的应用终止(崩溃)”
我们需要了解更多信息,以帮助您解决这个问题。
在Xcode控制台中,它应该发出可以缩小问题范围的消息。堆栈跟踪也很有用。
我的总猜测是你的本地root
实例未定义,因此你在该对象上调用一个无法识别的选择器。但是如果没有控制台的更多帮助,那就完全可以猜到了。