我有霍尼韦尔Captuvo SL22的Objective C方法,SDK说我可以用来接收扫描的条形码数据:
-(void)decoderDataReceived:(NSString*)data;
我试图在ObjectiveC Bridge中使用它,如下所示:
Objc.DelegateObject delegate = Objc.makeDelegate()
.add("decoderDataReceived:", Method.create(Method.ArgType.Void , new Method.ArgType[]{Method.ArgType.CString},args ->
{
Log.p("Received " + args[0]);
return null;
}));
Objc.eval(captuvoShared, "addCaptuvoDelegate:", delegate);
然而,即使我已经成功连接到扫描仪,当我进行扫描显示扫描仪指示灯和哔声时,“decoderDataReceived”方法没有被调用?
答案 0 :(得分:2)
在Objective-C中,NSString
只是一个常规对象(即它是NSObject
的子类),因此您可以使用ArgType.Object
作为参数类型。 ArgType.CString
参数类型将用于const char*
。
所以只需将代码更改为
即可
Objc.DelegateObject delegate = Objc.makeDelegate()
.add("decoderDataReceived:", Method.create(Method.ArgType.Void , new Method.ArgType[]{Method.ArgType.Object},args ->
{
Log.p("Received " + args[0]);
return null;
}));
Objc.eval(captuvoShared, "addCaptuvoDelegate:", delegate);
你应该做得好。