Objective c 将Swift对象传递到JavaScript时崩溃
我正试着用一门快速的课。这就是我所拥有的:Objective c 将Swift对象传递到JavaScript时崩溃,objective-c,swift,javascriptcore,Objective C,Swift,Javascriptcore,我正试着用一门快速的课。这就是我所拥有的: import JavaScriptCore @objc(MyObjExport) // explicit name required for class_copyProtocolList to work public protocol MyObjExport: JSExport { var foo: String! { get } } @objc(MyObj) public class MyObj: NSObject, MyObjExpor
import JavaScriptCore
@objc(MyObjExport) // explicit name required for class_copyProtocolList to work
public protocol MyObjExport: JSExport {
var foo: String! { get }
}
@objc(MyObj)
public class MyObj: NSObject, MyObjExport
{
public var foo: String! { return "bar" }
}
这将生成以下“MyModule Swift.h
”标题:
它在JSCore实现中崩溃:
#0 0x00007fff87c5ca73 in objectToValueWithoutCopy(JSContext*, objc_object*) ()
#1 0x00007fff87c5c27e in objectToValue(JSContext*, objc_object*) ()
#2 0x00007fff87c5c20c in +[JSValue valueWithObject:inContext:] ()
(控制台上没有记录任何内容。)如果我在Obj-C中而不是在Swift中实现该类,它工作正常。出了什么问题,我该如何解决这个问题?您肯定不希望通过创建JSValue传递的JSContext为零 我尝试使用非nil上下文,并且我可以成功地实例化JSValue,使用nil上下文,它会因EXC_BAD_访问而崩溃 这将有助于:
JSContext *context = [[JSContext alloc] init];
MyObj *foo = [[MyObj alloc] init];
[JSValue valueWithObject:foo inContext:context];
#0 0x00007fff87c5ca73 in objectToValueWithoutCopy(JSContext*, objc_object*) ()
#1 0x00007fff87c5c27e in objectToValue(JSContext*, objc_object*) ()
#2 0x00007fff87c5c20c in +[JSValue valueWithObject:inContext:] ()
JSContext *context = [[JSContext alloc] init];
MyObj *foo = [[MyObj alloc] init];
[JSValue valueWithObject:foo inContext:context];