我已经查看过这样的其他问题,但无法找到帮助。当我按下应该发出声音的按钮时,应用程序崩溃了。这是调试控制台:
调试器退出状态为0.
[会议开始于2011-04-18 18:07:56 +0800。]
GNU gdb 6.3.50-20050815(Apple版gdb-1515)(2011年1月15日星期六08:33:48 UTC) 版权所有2004 Free Software Foundation,Inc。
GDB是免费软件,由GNU通用公共许可证涵盖,您是 欢迎在特定条件下更改和/或分发副本 输入“显示复制”以查看条件 GDB完全没有保修。输入“show warranty”了解详情 此GDB配置为“x86_64-apple-darwin”.sharedlibrary apply-load-rules all 附加到过程3814.
程序收到信号:“EXC_BAD_ACCESS”。
(gdb)
那是调试器控制台。
这是我的编码:
AppDelegate.h
#import <UIKit/UIKit.h>
#import <AVFoundation/AVFoundation.h>
@interface MathAppDelegate : NSObject <UIApplicationDelegate> {
AVAudioPlayer* sound;
UIWindow *window;
UINavigationController *navigationController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet UINavigationController *navigationController;
-(IBAction)play;
@end
AppDelegate.m
#import "MathAppDelegate.h"
#import "MainMenuViewController.h"
@implementation MathAppDelegate
@synthesize window;
-(IBAction)play {
NSString *path = [[NSBundle mainBundle] pathForResource:@"M1" ofType:@"aif"];
AVAudioPlayer *sound = [[AVAudioPlayer alloc] initWithContentsOfURL: [NSURL fileURLWithPath:path] error:NULL];
sound.delegate = self; ("I get an error here saying 'Local declaration of 'sound' hides instance variable") and ("Class 'MathAppDelegate' does not implement the AVAudioPlayerDelegate' protocol")
[sound play]; ("I get an error here saying 'Local declaration of 'sound' hides instance variable'")
}
我已将按钮连接到Interface Builder中的操作。是什么让我觉得这搞砸了我必须将app委托对象从mainwindow.xib
拖到mainmenuviewcontroller.xib
,因为那是我需要放置按钮的地方。它仍然连接。
答案 0 :(得分:1)
最简单的解决方案是让您的按钮操作指向同一XIB中对象中可用的操作。因此,您可能希望将主菜单控制器中的播放操作挂钩到文件的所有者,在这种情况下可能是您的MainMenuViewController
对象。我只是将播放动作和相关代码移动到该文件。
应用程序委托是MainWindow.xib中的对象控制器,并配置为同一文件中窗口的委托。由于您将其移动到另一个xib,因此窗口的委托现在指向一个不存在的对象。这可能解释了崩溃。
答案 1 :(得分:0)
编程接收信号:“EXC_BAD_ACCESS”。
database1AppDelegate *appDelegate = (database1AppDelegate*)[[UIApplication sharedApplication]delegate];
singleStudent *sStudent = [appDelegate.aryDatabase objectAtIndex:indexPath.row];
cell.textLabel.text = [sStudent strName];