错误线程1:信号SIGABRT

时间:2012-09-02 18:45:30

标签: objective-c ios sigabrt

我正在学习Objective C,我正在学习本书的例子。但是在某些例子中我不断收到此错误!我完全按照步骤,请帮忙!我已经尝试将iOS模拟器恢复到默认设置,但仍然没有运气。

这是一个可以录制声音并播放的应用程序。这是代码......

- (IBAction)recordAudio:(id)sender {
    if ([self.recordButton.titleLabel.text isEqualToString:@"Record Audio"]){
        [self.audioRecorder record];
        [self.recordButton setTitle:@"Stop Recording"
                           forState:UIControlStateNormal];
    } else {
        [self.audioRecorder stop];
        [self.recordButton setTitle:@"Record Audio"
                           forState:UIControlStateNormal];

        // Load the new sound in the audioplayer for playback
        NSURL *soundFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory()
                             stringsByAppendingPaths:@"sound.caf"]];

        self.audioPlayer = [[AVAudioPlayer alloc]
                            initWithContentsOfURL:soundFileURL error:nil];
    }
}

1 个答案:

答案 0 :(得分:1)

我运行了部分代码,这是错误消息:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '***
-[__NSCFString stringsByAppendingPaths:]: paths argument is not an array'

正如文档所述,stringsByAppendingPaths返回一个NSArray的NSString对象,它通过将NSArray的每个NSString分别附加到接收器的路径中而形成。 @“sound.caf”是一个NSString,而不是NSArray,它引发了异常。

更改以下内容:

    NSURL *soundFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory()
                         stringsByAppendingPaths:@"sound.caf"]];

要:

    NSURL *soundFileURL = [NSURL fileURLWithPath:[NSTemporaryDirectory()
                         stringByAppendingPathComponent:@"sound.caf"]];

它应该有用。