2017-04-07 50 views
1

我试图调用Objective-C的方法如何公开Objective-C的指针移动方法,WithResultBuffer在IOS绑定

-(nabto_status_t)nabtoRpcInvoke:(NSString *)url withResultBuffer:(char 
    **)jsonResponse; 

我使用的Objective-记号笔工具来生成跟踪方法

[Export("nabtoRpcInvoke:withResultBuffer:")] 
unsafe nabto_status_t RpcInvoke(string url, ref byte jsonResponse); 

请帮助正确公开我,这样我就可以得到我可以在IOS应用程序中使用的JsonResponse字符串。

+0

您正在使用iOS Frameworks或Xamarin.iOS库绑定? – XTL

+0

我正在使用Xamarin.IOS库绑定。 –

+0

只是清除目标sharpie生成 [导出(“nabtoRpcInvoke:withResultBuffer:”)] 不安全nabto_status_t RpcInvoke(字符串url,sbyte jsonResponse);我添加了ref从指针得到输出。作为它的char ** –

回答

0

我做了这些更改生成的方法

[Export("nabtoRpcInvoke:withResultBuffer:")] 
     unsafe nabto_status_t RpcInvoke(string url, ref IntPtr 
     jsonResponse); 

,然后我得到了JsonResonse如下。

 IntPtr buff=new IntPtr() ; 
     status = Client.RpcInvoke(URL, ref buff); 

     byte[] newArray = new byte[buff.ToInt32() + 1]; 

     for (int m = 0; m < buff.ToInt32(); m++) 
     { 
      byte b = Marshal.ReadByte(buff,m); 
      newArray[m] = b; 
     } 


     var JsonResponse = System.Text.Encoding.UTF8.GetString(newArray); 
相关问题