【问题标题】:Using AudioKit with Objective-C在 Objective-C 中使用 AudioKit
【发布时间】:2017-09-23 09:58:30
【问题描述】:

我想使用 Objective-C 为我的录音机/播放器添加波形图功能。我发现 AudioKit 4 似乎是一个很棒的框架,我从 audiokit.io 网站导入了 AudioKit 和 AudioKitUI 框架。我正在使用带有 iOS10.0 目标的 Xcode 9。不幸的是,我无法在我的 Objective-C 代码中初始化 AudioKit 中的一些类...例如,要创建一个 AKAudioPlayer 实例,我使用:

AKAudioFile *audioFile = [[AKAudioFile alloc] initForReading: myURL error:&error];  
AKAudioPlayer* playerAK = [[AKAudioPlayer alloc] initWithFile:audioFile looping:NO deferBuffering:false completionHandler:nil];

根据我对在 Objective-C 中使用 swift 框架的 Apple 文档的了解,我认为 initWithFile: looping: deferBuffering: completionHandler: 是从 AudioKit 框架中 AKAudioPlayer.swift 中定义的 swift init 调用在 Objective-C 中的良好翻译:

public init(file: AKAudioFile,
                looping: Bool = false,
                deferBuffering: Bool = false,
                completionHandler: AKCallback? = nil) throws...

AKAudioFile 对象实例化既不会导致警告也不会导致错误。但是在 AKAudioPlayer 实例化时,编译器返回一个错误,说没有接口声明选择器initWithFile: looping: deferBuffering: completionHandler:

我做错了什么?感谢您的帮助

【问题讨论】:

    标签: objective-c audiokit


    【解决方案1】:

    AudioKit 刚刚发布为 4.0.1 以纠正一些错误。所以我的问题现在已经过时了!

    【讨论】:

      【解决方案2】:

      通过cmd-click AKAudioPlayer可以看到暴露给objective-c的界面,唯一可用的init是:

      - (nonnull instancetype)init SWIFT_UNAVAILABLE;
      

      与加载文件相关的属性是:

      @property (nonatomic, readonly, strong) AKAudioFile * _Nonnull audioFile;
      @property (nonatomic, readonly, copy) NSString * _Nonnull path; 
      

      由于第一个是只读的,我想试试后一个。所以你最终会得到:

      @import AudioKit;
      
      - (void)inSomeMethod {
          AKAudioPlayer *player = [[AKAudioplayer alloc] init];
          player.path = @"/myPath/To/audioFile";
      }
      

      【讨论】:

      • 谢谢。但是 AKAudioPlayer *player = [[AVAudioplayer alloc] init];创建相同的编译器错误...(顺便说一句,它是 AKAudioPlayer 而不是 AVAudioPlayer)
      • 抱歉,我编辑了它,我最近每天都在使用AVAudioPlayer,它一直在我脑海中挥之不去。无论如何,你可以实例化[[AKAudioPlayer alloc] init] aka [AKAudioPlayer new] 吗?顺便说一句,在 repo github.com/AudioKit/AudioKit/tree/master/Examples/iOS/… 上有一个例子,也许它会让你开始。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多