Xamarin的坑-绑定(三) - iOS 绑定宝典

本文介绍了在Xamarin中进行iOS库绑定时遇到的挑战,包括MonoPInvokeCallback的使用、缺失常量的处理、.a库的引用以及编译选项的调整。重点讨论了如何解决LinkBehavior、mtouch arguments设置等问题,以确保项目能够成功编译和运行。建议开发者多尝试并深入理解绑定过程。
摘要由CSDN通过智能技术生成
编者语:iOS 绑定,对于Xamarin来说,是难点,也是痛点。这也阻碍了Xamarin的推广和真正进入一些大型项目,像上段时间两个例子微信和高德SDK绑定,随着版本更新也需要进行调整。这几个月我收到了不少留言和邮件是希望我总结一些步骤和实践的经验,由于工作繁忙,我拖到了现在实在不好意思,今天就来总结一把。
        绑定原生库(Linking Native Libraries)
       iOS的第三方库有两种,一种是Static Library ,一种是Dynamic Framework。 你可以把这些库对应成.NET中的DLL。封装成这些原生库一般是通过Objective-C/Swift/C去进行封装。通过Sharpie的转换,实际上是C#和这些Objective-C/Swift/C方法进行对接。这里再谈谈Sharpie对应生成两个文件ApiDefinition.cs/Structs.cs .(如图)
       
       不少人说这两个文件就埋下了不少坑,转换后第一步在ApiDefinition.cs就一堆         
   [Verify(ConstantsInterfaceAssociation)] 
       这个提示更多是需要你确认,而不需要有太多恐惧。我经验告诉大家,先把这些注释掉就可以了,有这种提示你是无法编译通过的。需要修改基本上是一些属性设定,get/set . 个人觉得这是第一道坎,也是最轻松的。
       修改完,真正的大坑才会出现。写代码是一个学问,不可能每个人都有高质量的代码。封装库就是了。因为ApiDefinition是做C#到Objecitve-C转换的桥梁。你需要理解好Protocol / Category / Interface 搞懂。
        Protocol等价于C#的接口,Category等价于C#的扩展方法,Interface等价于一个类的声明它结合Implement组合成一个类
       在 ApiDefinition.cs 中,这些都有对应的标识符作划分,这里通常呈现的问题如下:
       1. 转换的时候,由于Objective-C的语法问题很容易把几个方法重名
       2. 还有全局静态方法,会有多个
          [Static]
     partial interface Constants
 
   
           这个时候你需要把它整合放到一个里面
       3. 指针,C#是没有指针概念的,但Objective-C有 &#x
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值