我想使用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:
我做错了什么?谢谢你的帮助
答案 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";
}