#iphone #objective-c #xcode #accelerometer
#iPhone #objective-c #xcode #акселерометр
Вопрос:
Здравствуйте, я пытаюсь это сделать, поэтому, как только пользователь встряхивает устройство. Я хочу, чтобы воспроизводился звук. Однако, как только я встряхиваю устройство, оно выходит из строя, это код, который я использовал
- (BOOL)canBecomeFirstResponder
{
return YES;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if(motion == UIEventSubtypeMotionShake)
{
NSString *path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"wav"];
if (theAudio) [theAudio release];
NSError *error = nil;
theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:amp;error];
if (error)
NSLog(@"%@",[error localizedDescription]);
theAudio.delegate = self;
[theAudio play];
}
}
И это отчет о сбое
2011-04-19 19:25:44.337 iApp[314:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter'
*** Call stack at first throw:
(
0 CoreFoundation 0x00fc3be9 __exceptionPreprocess 185
1 libobjc.A.dylib 0x00db85c2 objc_exception_throw 47
2 CoreFoundation 0x00f7c628 [NSException raise:format:arguments:] 136
3 CoreFoundation 0x00f7c59a [NSException raise:format:] 58
4 Foundation 0x00055b12 -[NSURL(NSURL) initFileURLWithPath:] 90
5 Foundation 0x00055aa0 [NSURL(NSURL) fileURLWithPath:] 72
6 iApp 0x0000305d -[AppViewController motionEnded:withEvent:] 256
7 UIKit 0x002dc07c -[UIWindow sendEvent:] 350
8 UIKit 0x002bf37a -[UIApplication sendEvent:] 447
9 UIKit 0x002c311b _UIApplicationHandleEvent 1921
10 GraphicsServices 0x017daa36 PurpleEventCallback 1550
11 CoreFoundation 0x00fa5064 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ 52
12 CoreFoundation 0x00f056f7 __CFRunLoopDoSource1 215
13 CoreFoundation 0x00f02983 __CFRunLoopRun 979
14 CoreFoundation 0x00f02240 CFRunLoopRunSpecific 208
15 CoreFoundation 0x00f02161 CFRunLoopRunInMode 97
16 GraphicsServices 0x017d9268 GSEventRunModal 217
17 GraphicsServices 0x017d932d GSEventRun 115
18 UIKit 0x002c842e UIApplicationMain 1160
19 iApp 0x0000295c main 102
20 iApp 0x000028ed start 53
)
terminate called after throwing an instance of 'NSException'
Ответ №1:
Учитывая причину сообщения о сбое:
reason: '*** -[NSURL initFileURLWithPath:]: nil string parameter'
вместе с последней выполненной строкой в коде вашего приложения:
6 iApp 0x0000305d -[AppViewController motionEnded:withEvent:] 256
Я бы подумал, что ваш звук.wav-файл отсутствует:
NSString *path = [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"wav"];
Я предлагаю вам убедиться:
- звук.файл wav находится в вашем проекте
- пишется ли «sound.wav» с учетом регистра
Надеюсь, это поможет.
Комментарии:
1. Был там сам. Рад помочь.
2. @LAA, вы должны проголосовать и принять ответ, поскольку он правильный.