【问题标题】:No type or protocol named AKNode/AKToggleable没有名为 AKNode/AKToggleable 的类型或协议
【发布时间】:2018-03-07 09:14:55
【问题描述】:

我正在尝试扩展 AKNode 和 AKToggelable,但此错误出现在 Project-Swift.h 文件中

这样做的方法是什么?

我的课是

class AKCustom: AKNode, AKToggleable, AKComponent, AKInput {
public typealias AKAudioUnitType = AKBalancerDeplikeAudioUnit

public static let ComponentDescription = AudioComponentDescription(mixer: "dpba")

private var internalAU: AKAudioUnitType?


open dynamic var isStarted: Bool {
    return internalAU?.isPlaying() ?? false
}

public init( _ input: AKNode? = nil) {
    _Self.register()
    super.init()
    AVAudioUnit._instantiate(with: _Self.ComponentDescription) { [weak self] avAudioUnit in

        self?.avAudioNode = avAudioUnit
        self?.internalAU = avAudioUnit.auAudioUnit as? AKAudioUnitType

        input?.connect(to: self!)
    }
}

open func start() {
    internalAU?.start()
}

open func stop() {
    internalAU?.stop()
}
}

Project-Swift.h 文件中的错误信息:

Cannot find interface declaration for 'AKNode', superclass of 'AKCustom'

No type or protocol named 'AKToggleable'

【问题讨论】:

  • 什么是AKNode?它在什么框架中?
  • AKNode 是 AudioKit 框架中的一个类 /// AudioKit 中所有节点的父类 @objc open class AKNode : NSObject { }
  • 貌似不是标准iOS框架的一部分,需要安装...audiokit.io/docs/index.htmliOS框架是CoreAudioKit

标签: ios swift audiokit


【解决方案1】:

#import "AudioKit/AudioKit-Swift.h" 添加到PROJECT-Bridging-Header.h。然后可以通过Project-Swift.h 访问AKNode

【讨论】:

  • 这可能有效,但根据我的经验,它不是必需的。
【解决方案2】:

AudioKit 文件夹内是一个“Developer”文件夹,其中包含 iOS 和 Mac 上“Extending AudioKit”的示例。这可能是最好的起点。确保您将源代码正确地包含为框架 - 此文件夹中的示例向您展示了如何直接使用源代码或预编译框架。

【讨论】:

    猜你喜欢
    • 2016-04-08
    • 2016-11-05
    • 2020-12-30
    • 1970-01-01
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多