- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个名为 ARecorder 的对象类。 (ARecorder.h/ARecorder.m) 实现有几个方法:
-void(setupAndRecord)
-(void)stop
等
我设置了一个 AVAudioSession
共享实例,我用 NSURL
、alloc
和 init
*recorder 设置文件AVAudioRecorder
对象,准备录音。然后是 [recorder record]
或 [recorder recordforduration(NSTimer]
- 我都试过了。
当我将 *MyRecorder
实例化为类 ARecorder
的对象时,从 say... viewcontroller
调用 [.. .setupAndRecord]
方法 - 对象显然是在 MYRecorder
实例中的 AVAudioRecorder
对象有机会做任何事情之前创建和释放的......它创建了文件,开始记录,到那时对象 MYRecorder
显然立即被释放。
如果我设置一个循环,或者在 *MYRecorder
中使用@selector afterdelay
,它会记录...这是一个 hack 而不是正确的方法。
我已经将 *recorder
设置为属性:
@property (strong, nonatomic) AVAudioRecorder *recorder
我也将它声明为一个实例变量。没有什么能让它保持分配状态。我知道我需要使用属性而不是在方法中分配和初始化 AVAudioRecorder *recorder 对象?那么我该如何转动它呢
"recorder = [[AVAudioRecorder alloc] initWithContentsOfURL:myURL error:&err];"
进入属性而不是本地实例?
如果我将所有这些代码移动到 viewcontroller - 显然 viewcontroller 保留在内存中,因此实例化 AVAudioRecorder
对象的 -void(setupAndRecord)
方法将保留保留直到完成 - 但 MVC 模式的重点不是将模型与 View 分开吗?
我还想在 View Controller 中使用 audioRecorderdidfinishrecording 委托(delegate)
- 但我不知道如何在 中获取
对象在 ViewController 中使用 AVAudioRecorder *recorder
的实例MYRecorderdelegate
。
我希望 viewcontroller 成为 *recorder
的 delegate
并在 末尾调用
audioRecorderDidFinishRecording
时做一些事情 [录音机 recordforduration...]
显然,如果对象没有在内存中停留足够长的时间甚至无法记录,则不会调用委托(delegate)方法。但是可以说 MYRecorder
对象由于一些疯狂的原因被保留,在 [... recordforduration]
的末尾,它如何使用 viewcontroller 中的委托(delegate)方法而不是在 MYRecorder 中?我希望 MYRecorder
对象做的就是记录并在完成时告诉 viewcontroller 中的 didfinishrecording
委托(delegate)。看起来应该没有那么难。
最佳答案
听起来问题出在您的 MyRecorder 对象的所有权上。
我建议您将 MyRecorder 设为单例。在 SO 上搜索 Objective-C 中的单例设计模式。你应该找到很多例子。
您的强属性语法是正确的。如果您的 MyRecorder 有一个属性:
@property (strong, nonatomic) AVAudioRecorder *recorder
然后在 MyRecorder 的设置代码中,您将使用如下代码:
self.recorder = [[AVAudioRecorder alloc] initWithContentsOfURL:myURL error:&err];
请注意,它读取的是 self.recorder,而不是 recorder
。它使用属性的 setter 而不是直接访问实例变量,您应该养成这样做的习惯。
关于ios - 如何将 AVAudioRecorder 本地实例设置为 Property 以使其保持保留状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22115122/
以下是我的录制按钮方法的内容。它创建了所需的文件,但无论我记录多长时间,创建的文件的长度始终为 4kb 和 0 秒,我无法弄清楚为什么它无效。对于averagePowerPerChannel,计量也返
在我的设备上使用 Xcode 5.0 并运行 iOS 7.0.2。 我正在使用这种代码: AVAudioRecorder *audioRecorder; ……… [audioRecorder reco
我希望有人能支持我...... 我一直在开发一个应用程序,该应用程序允许最终用户录制一个小音频文件以供以后播放,并且正在测试内存泄漏。当 AVAudioRecorder 的“停止”方法尝试关闭其正在录
我在进入后台后暂停 AVAudioRecorder 时遇到问题。基本上,它是这样的(_recorder 是我的 AVAudioRecorder 实例): 开始录制: [_recorder record
AVAudioRecorder的peakPowerForChannel和averagePowerForChannel方法有什么区别? 为什么返回的值为负数?不是应该在没有声音时为 0,在声音幅度增大时
我有一个可以录制音频的应用程序。我想知道如何才能增加增益。有没有办法标准化音频或以某种方式放大它? 谢谢,豪伊 最佳答案 看来我找到了解决方案。根据文档,AVAudioPlayer 音量可以在 0.0
简单地说,我正在尝试根据 iPhone 麦克风输入流中的分贝读数对某些内容进行口型同步,但我得到的值并不完全是我想要的值。我正在使用 AVAudioRecorder 的peakPowerForChan
这是我的方法: -(void) playOrRecord:(UIButton *)sender { if (playBool == YES) { NSError *error
无法获取 AVAudioRecorder 与 URL 配合使用的代码。有人能够在 iOS 和 Swift 3 上录制音频吗?下面的粗体文本是我收到以下错误的地方: "Cannot invoke ini
我正在制作 iOS 游戏。我需要做的一件事是允许用户进行快速录音。这一切都有效,但录音只是暂时保存。因此,当用户关闭应用程序并重新打开它时,录音应该能够再次播放,但它没有,当我关闭应用程序时它被删除了
我需要开发一个在检测到语音时播放mp3的App女巫。我可以使用“在这里说”示例吗?还是有人知道类似的例子? 我当时在看FFT和aurioTouch的示例,但对我来说似乎很难... 提前致谢 最佳答案
我正在制作一个应用程序,可以记录用户的声音并以高音调播放给他们。 (像花栗鼠)。适用于 iOS 5.0 或更高版本以及 Xcode 4.6 这个问题之前已经在这里问过 Record the sound
我正在使用 AVAudioRecorder 录制具有以下配置的不同长度的音频文件: - (AVAudioRecorder*)recorder { if(!_recorder) {
我正在使用 AVAudioRecorder 进行录制,当我录制时,我按主页按钮并来到前台并检查 AVAudioRecorder (isRecording) 的状态仍然是 是。但是当我播放音频时,它只播
我最近发现我的应用程序存在漏洞。我把所有的代码都注释掉了,一步一步去掉注释。这一切都导致了 AVAudioRecorder。 ViewController.h: #import @interface
我正在使用 AVAudioRecorder 录制音频,它录制流畅,我可以播放或获取保存文件我正在使用以下代码初始化 AVAudioRecorder NSDictionary *settings =
我现在正在为 AVAudioRecorder(和 Player)苦苦挣扎。我有一个应用程序,其中有三个简单的按钮可以录制/播放/停止通话,我正在使用 AVAudioRecorder 和 AVAudio
我正在使用 AVAudioRecorder 录制并保存到具有以下设置的 audio.m4a 文件: NSMutableDictionary *recordSetting = [[NSMutableDi
如何在被来电打断后继续录音?现在来电后我的录音停止了,但我希望能够继续录音 func audioRecorderDidFinishRecording(_ recorder: AVAudioRecord
我正在努力实现我认为会非常容易但事实并非如此的事情。 我正在玩“react-native-audio”库的源代码。但是你可以假设我是为了这个问题而在本地工作。 这是一个reference for th
我是一名优秀的程序员,十分优秀!