将AudioKit与Objective-C一起使用

时间:2017-09-23 09:58:30

标签: objective-c audiokit

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

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

根据我在Apple文档中对Objective-C中使用swift框架的理解,我认为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:

我做错了什么?谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

通过cmd点击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";
}