小编Pla*_*erb的帖子

如何在Swift中实现非常精确的计时?

我正在开发一个具有琶音/排序功能的音乐应用程序,需要很高的计时准确性.目前,使用"Timer"我已经达到了平均抖动约为5ms的精度,但最大抖动约为11ms,这对于8号,16号和32号音符的快速琶音来说是不可接受的.

我已经读过'CADisplayLink'比'Timer'更准确,但由于它的准确度(~16-17ms)限制在1/60秒,看起来它的准确性不如我已经实现了Timer.

潜入CoreAudio是实现我想要的唯一途径吗?还有其他方法可以实现更精确的计时吗?

timer timing core-audio ios swift

9
推荐指数
2
解决办法
1552
查看次数

Swift 3核心数据"实体"错误:`使用未声明的类型`

Use of undeclared type 'Transcription'

我正在关注Swift 3中这个简单的核心数据教程(https://learnappdevelopment.com/uncategorized/how-to-use-core-data-in-ios-10-swift-3/)

我在线上得到上述错误: let fetchRequest: NSFetchRequest<Transcription> = Transcription.fetchRequest()

我仔细检查并在我的.xcdatamodeld文件中正确拼写了Entity"Transcription"

本教程是为Swift 3设计的,但是自我发布之后又发生了另一个修改,所以我猜测过去2个月内Swift的其他一些变化导致了这个错误.

我是Core Data的新手,所以我不知道如何调试它.我非常感谢解决方案!

xcode core-data ios swift3 xcode8

8
推荐指数
5
解决办法
9765
查看次数

如何在 Swift 中取消和重新启动定时事件?

我有一个sliderValueChange更新 aUILabel文本的函数。我希望它有一个时间限制,直到它清除标签的文本,但我也希望这个“定时清除”操作UISlider在“定时清除”操作发生之前的时间限制内移动时被取消并重新启动或延迟.

到目前为止,这就是我所拥有的:

let task = DispatchWorkItem {
  consoleLabel.text = ""
}
func volumeSliderValueChange(sender: UISlider) {

  task.cancel()

  let senderValue = String(format: "%.2f", sender.value)
  consoleLabel.text = "Volume: \(senderValue)"

  DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: task)  
}
Run Code Online (Sandbox Code Playgroud)

显然,这种方法不起作用,因为cancel()显然无法逆转..(或者至少我不知道如何)。我也不知道如何在此功能结束时启动一个新任务,如果该功能被召回,该任务将被取消。

我会以错误的方式解决这个问题吗?有什么我可以忽略的东西吗?

events delay cancellation ios swift

3
推荐指数
1
解决办法
2724
查看次数

如何获得音频应用程序的可靠时序?

我有一个音频应用程序,其中所有声音生成工作都是通过纯数据(使用libpd)完成的。

我已经快速编写了一个特殊的音序器,该音序器控制合成引擎在纯数据中播放的多个音序的开始/停止播放。

到目前为止,我完全避免在应用程序的任何方面使用Core Audio或AVFoundation,因为我对它们一无所知,而且它们似乎都需要C或Objective C编码,而我对此一无所知。

但是,从之前的问答中已经得知,我需要使用Core Audio或AVFoundation来获得准确的时间。没有它,我已经尝试了其他所有方法,并且时间完全混乱了(漫长,抖动)。

对我而言,关于Core Audio的所有教程和书籍似乎都极为广泛和深入。如果我从这些框架之一中需要的只是我的音序器的准确时序,那么您如何建议我成为Core Audio和Objective-C的新手,但拥有95%完成的音频应用程序?

audio core-audio avfoundation libpd swift

3
推荐指数
1
解决办法
274
查看次数