У меня есть класс, который записывает аудио на iOS. У меня есть класс var audioSettings
, это словарь с настройками аудио-рекордера. Я создаю этот obj
один раз, когда класс загружается, и затем вызывается метод recordAudio
, я назначаю этот диктофон для устройства записи звука. После окончания записи я release
и nil
audioRecorder
. Вот код:
- (void) recordAudio: (NSURL *) fileURL {
NSError * error = nil;
if (!audioSettings) {
//If no dict, fill it
[self setDefaultSettings];
}
audioRecorder = [[AVAudioRecorder alloc] initWithURL:fileURL settings:audioSettings error:&error];
//audioRecorder.delegate = self;
if (!error) {
[audioRecorder prepareToRecord];
if (!audioRecorder.recording) {
[audioRecorder record];
}
} else {
NSLog(@"Create Error: %@", [error localizedDescription]);
}
}
Вот что создает диктат:
- (void) setDefaultSettings {
audioSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:16],
AVEncoderBitRateKey,
[NSNumber numberWithInt:2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:44100.0],
AVSampleRateKey, nil];
}
После окончания записи я установил:
[audioRecorder release];
audioRecorder = nil;
Так что я могу использовать его снова, не освобождая весь класс.