大佬教程收集整理的这篇文章主要介绍了从JavaScript调用swift方法会挂起xcode和应用程序,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人遇到过这种问题?
我的快捷代码如下:
@objc protocol WindowJSExports : JSExport { var name: String { get set } func getName() -> String static func createWindowWithName(name: String) -> WindowJS } @objc class WindowJS : NSObject,WindowJSExports { dynamic var name: String init(name: String) { self.name = name } class func createWindowWithName(name: String) -> WindowJS { return WindowJS(name: Name) } func getName() -> String { NSLog("getName called from JS context") return "\(Name)" } }
我正在初始化上下文如下:
runContext = JSContext() runContext.name = "test_Context" windowToJs = WindowJS(name: "test") runContext.setObject(windowToJs.self,forKeyedSubscript: "WindowJS")
如果我用上面的代码替换上面代码中的最后两行而不实例化它,代码就无法加载.
runContext.setObject(WindowJs.self,forKeyedSubscript: "WindowJS")
而javascript代码就像
function check() { return WindowJs.getName() }
您需要将其解耦并使通信异步.这显然意味着在这种情况下你不能简单地从JS函数返回一个值.
要解耦,可以通过使用setTimeout延迟当前runloop迭代中JavaScript函数需要执行的工作来打破死锁:
function MyFunction() { setTimeout(function() { // The actual work is done here. // Call the Swift part here. },0); }
整个本地↔︎JavaScript通信非常非常棘手.如果可以,请避免使用它.有一个名为XWebView的项目可以帮助你,因为它试图缓解两个世界之间的桥梁.
以上是大佬教程为你收集整理的从JavaScript调用swift方法会挂起xcode和应用程序全部内容,希望文章能够帮你解决从JavaScript调用swift方法会挂起xcode和应用程序所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。