在objective-c的类中有一个类AliPlayer,里面有一个AVPDelegate接口成员
@interface AliPlayer : NSObject
@property (nonatomic,weak) id<AVPDelegate> delegate
接口AVPDelegate有以下代码
@protocal AVPDelegate <NSOjbect>
@optional
-(void) onPlayerEvent :(AliPlayer*)player eventType:(AVPEventType) eventType;
在ios项目中执行一下的代码可以正常执行回调:
class ViewController:UIViewController,AVPDelegate{
override func viewDidLoad(){
#######省略无关代码#########
player.delegate = self
}
func onPlayerEvent(_ player:AliPlayer!,eventType : AVPEventType){
print("收到播放器事件")
}
}
在uts插件中执行代码没有回调:
NVLoaded() {
#######省略无关代码#######
aliPlayer!.delegate = new AVPDelegateClass();
},
class AVPDelegateClass implements AVPDelegate {
onPlayerEvent(player : AliPlayer, @argumentLabel("") eventType : AVPEventType) {
console.log("收到播放器事件")
}
}
uts可以正常调用aliplayer sdk的方法,但是这个回调没有触发,想问一下写法哪里出了问题
1 个回复
DCloud_iOS_LZY
aliPlayer!.delegate = new AVPDelegateClass(); 这句代码有问题,new AVPDelegateClass()创建对象后,在其所在函数执行完后就会被立即释放,需要使用一个全局变量来保存这个代理对象