Я смотрел на другие подобные вопросы, но не могу найти помощь.Когда я нажимаю кнопку, которая должна воспроизводить звук, приложение вылетает.Вот консоль отладки:
Отладчик вышел с состоянием 0.
[Сессия началась в 2011-04-18 18:07:56 +0800.]
GNU gdb 6.3.50-20050815 (версия Apple gdb-1515) (суббота, 15 января 08:33:48 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB - свободное программное обеспечение, на которое распространяется Стандартная общественная лицензия GNU,и вы
можете изменять его и / или распространять его копии при определенных условиях.
Введите «показать копирование», чтобы просмотреть условия.
На GDB нет абсолютно никаких гарантий.Для получения подробной информации введите «показать гарантию».
Эта 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'")
}
Я подключил кнопку к действию в Интерфейсном Разработчике.Что заставляет меня чувствовать, что это испортилось, так это то, что мне пришлось перетащить объект делегата приложения из mainwindow.xib
в mainmenuviewcontroller.xib
, потому что именно там мне нужно было нажать кнопку.Это все еще связано, хотя.