2
我試圖在JavaScriptCore上使用Swift類。這是我有:將Swift對象傳遞給JavaScript時發生崩潰
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
」 頭:
SWIFT_PROTOCOL("MyObjExport")
@protocol MyObjExport <JSExport>
@property (nonatomic, readonly, copy) NSString * foo;
@end
SWIFT_CLASS("MyObj")
@interface MyObj : NSObject <MyObjExport>
@property (nonatomic, readonly, copy) NSString * foo;
@end
我可以創建和使用這個對象和其他的OBJ-C代碼就好了,但是:
MyObj *foo = [[MyObj alloc] init];
[JSValue valueWithObject:foo inContext:nil]; // EXC_BAD_ACCESS
它崩潰的JSCore實現:
#0 0x00007fff87c5ca73 in objectToValueWithoutCopy(JSContext*, objc_object*)()
#1 0x00007fff87c5c27e in objectToValue(JSContext*, objc_object*)()
#2 0x00007fff87c5c20c in +[JSValue valueWithObject:inContext:]()
(沒有任何記錄到控制檯。)如果我在Obj-C而不是Swift中實現類,它工作正常。什麼是錯,我該如何解決這個問題?