0

以下のコードを使用して、スタートボタンとストップボタンを備えたiPhone用のシンプルなオーディオレコーダーを作成しようとしています。

コンパイルは正常に動作しますが、プログラムをデバッグしようとして開始ボタンを押すと、「エラー: nil];」と表示されている行にスレッド 1: トレースが表示されます。

それが何を意味するのかを理解し始める方法さえよくわかりません。ちなみに、objective-c と xcode を使用するのはこれが初めてです。

// Start recording or warn that already started
- (IBAction)startButton_clicked:(id)sender {
    if (currentlyRecording == false)
    {
        // Sets recorder settings
        [[AVAudioSession sharedInstance]
         setCategory: AVAudioSessionCategoryRecord
         error: nil];
        NSDictionary *recordSettings =
        [[NSDictionary alloc] initWithObjectsAndKeys:[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
         [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
         [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
         [NSNumber numberWithInt: AVAudioQualityMax],
         AVEncoderAudioQualityKey, nil];
        // Determine file name
        NSString *fileDir = [NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES) objectAtIndex:0];
        NSString *filePath = [NSString stringWithFormat:@"%@/%@.wav", fileDir , GetCurrentTime()];
        //debugText.text = [NSString stringWithFormat:@"%@", filePath]; // DEBUGGING

         // Prepare recording
         soundFileURL = [[NSURL alloc] initWithString:filePath];
         AVAudioRecorder *newRecorder =
         [[AVAudioRecorder alloc] initWithURL: soundFileURL
         settings: recordSettings
         error: nil];
         [recordSettings release];
         soundRecorder = newRecorder;
         [newRecorder release];

         // Record
         [soundRecorder prepareToRecord];
         [soundRecorder record];
         currentlyRecording = true;
         headLabel.text = @"Started";
    }

    // if currentlyrecording is already true
    else headLabel.text = @"Already Started";
}


// stops recording or warns that already stopped
- (IBAction)stopButton_clicked:(id)sender {
    if (currentlyRecording == true)
    {
        // Stop recording & clear vars
        [soundRecorder stop];
        soundRecorder = nil;
        currentlyRecording = false;
        headLabel.text = @"Stopped";
    }

    // if currentlyrecording is already false
    else headLabel.text = @"It's not even on!";
}
4

1 に答える 1

0

同様の問題が発生しています。[AVAudioSession sharedInstance] で例外ブレークポイントが発生しますが、コンソール ウィンドウには例外がありません。ただし、コンソール出力でこれを取得します。

<com.apple.main-thread> AddPropertyListenerImp posting message to kill mediaserverd (0)

私も自分のアプリで録音していますが、レコードが故障してアプリを再起動すると、これが発生します。これはアプリを新たに実行したときのものですが、以前に発生したことが原因で、デバイスが問題のある状態になっていることは明らかです。

お役に立てば幸いです-解決策の直接的な答えではないことはわかっていますが、もう少し光を当てたいと思いました.

于 2013-02-15T15:53:22.547 に答える