Я использую AVAudioRecorder в своем приложении для Mac. В моем файле .m я объявляю
@interface RecordViewController ()
{
AVAudioRecorder *audioRecorder;
...
}
@end
далее я выделяю объект инициализации следующим образом:
audioRecorder = [[[AVAudioRecorder alloc] initWithURL:soundFileURL settings:recorderSettings error:&error] retain];
...
[audioRecorder prepareToRecord];
...
[audioRecorder record];
Я вижу, что файл создается, но он имеет только 4 КБ. Я не получаю сообщения об ошибке, но когда я проверяю [audioRecorder isRecording]
, я вижу, что [audioRecorder больше не записывает. Я предполагаю, что объект был освобожден, хотя я не использую ARC и метод Dealloc не вызывался.
У меня была аналогичная проблема с AVAudioPlayer, но дополнительный retain]
, добавленный к alloc init, решил это.
Что я делаю неправильно?
Спасибо
ОБНОВЛЕНИЕ 1:
Я даже пытался сделать следующее (все тем же методом):
[audioRecorder record];
NSLog(@"recording is ... %d", [audioRecorder isRecording]);
и результат 0. ???
Должен ли я использовать self
? или лениво создавать экземпляр audioRecorder
?
ОБНОВЛЕНИЕ 2: я воссоздал проект, назвав его TEST и скопировав исходный код из моего старого проекта. Теперь работает?!?! Иди разберись. Исходники построчно одинаковые. Это известная проблема с XCode?
audioRecorder
был освобожден, кажется, что вы получите ошибку неправильного доступа, если вызоветеisRecording
на нем. - person Dustin   schedule 24.07.2012isRecording
. - person Joseph   schedule 24.07.2012