【问题标题】:How do you access a KrollCallback in swift?如何快速访问 KrollCallback?
【发布时间】:2020-09-16 16:49:19
【问题描述】:

我已经实现了一个自定义框架,它被集成到一个启用超循环的项目中。

我将 function 定义作为参数传递给采用协议的 swift 函数。

Javascript:

var customListener = {};

customListener.onPayEvent = function(event) {
    console.log("moop");
  };

var PayView = require('Pay/PayView');

var payView = PayView.alloc().initWithPayEventListener(customListener);

这个 javascript 函数定义以 KrollCallback 的形式出现。

Swift 代码:

class PayListener: NSObject, WootPayEventListener {
    let payEventListener: PayEventListener
    
    init(payEventListener: PayEventListener) {
        self.payEventListener = payEventListener
    }
    
    public func onPayEvent(PayEvent: PayEvent) {

        os_log("calling payEventListener.onPayEvent")
        os_log("listener description = %{public}@", self.payEventListener.description)

        os_log("listener debugDescription = %{public}@", self.payEventListener.debugDescription ?? "")
//        self.payEventListener.onPayEvent(payEvent: "woo dogggy")
    }
}

如何调用该对象的方法,以便将结果从 swift 返回到 javascript?

【问题讨论】:

    标签: appcelerator appcelerator-hyperloop


    【解决方案1】:

    我可以通过在本地构建 TitaniumKit 框架然后将其导入到我的项目中来做到这一点。

    TitaniumKit 源代码在这里:https://github.com/appcelerator/titanium_mobile/tree/master/iphone/TitaniumKit

    框架的当前构建步骤如下

    carthage build --archive

    一旦我将它导入到项目中,我就可以像这样使用KrollCallback:

    class SimplePayListener: NSObject, SimplePayEventListener {
        let payEventListener: PayEventListener
        
        init(payEventListener: PayEventListener) {
            self.payEventListener = payEventListener
        }
        
        public func onPayEvent(payEvent_ payEvent: String) {
            os_log("SimplePayListener event description = %{public}@", fivestarsPayEvent.description)
    
            let appceleratorCallback:KrollCallback = self.payEventListener as! KrollCallback
            
            appceleratorCallback.call([payEvent], thisObject: self.payEventListener)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-29
      • 2017-03-03
      • 2015-10-20
      • 2016-10-18
      • 1970-01-01
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多