我在我的 mac 应用程序中使用 AVAudioRecorder。在我的 .m 文件中,我声明
@interface RecordViewController ()
{
AVAudioRecorder *audioRecorder;
...
}
@end
再往下,我然后像这样分配初始化对象:
audioRecorder = [[[AVAudioRecorder alloc] initWithURL:soundFileURL settings:recorderSettings error:&error] retain];
...
[audioRecorder prepareToRecord];
...
[audioRecorder record];
我可以看到文件已创建,但它只有 4KB。我没有收到错误消息,但是当我测试是否[audioRecorder isRecording]
可以看到 [audioRecorder 不再录制。我假设该对象已被释放,即使我没有使用 ARC 并且没有调用 dealloc 方法。
我对 AVAudioPlayer 也有类似的问题,但retain]
附加到 alloc init 的附加功能解决了这个问题。
我究竟做错了什么?
谢谢
更新 1:
我什至尝试过执行以下操作(均采用相同的方法):
[audioRecorder record];
NSLog(@"recording is ... %d", [audioRecorder isRecording]);
结果是0。???
我必须使用self
吗?还是懒惰地实例化audioRecorder
?
更新 2: 我重新创建了项目 - 将其命名为 TEST 并从我的旧项目中复制了源代码。现在它起作用了?!?!去搞清楚。源代码是逐行相同的。这是 XCode 的一个已知问题吗?