以下のコードを使用して、スタートボタンとストップボタンを備えた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!";
}