OC&Swift混编的注意点

5 篇文章 0 订阅

当前swift正在逐步开始流行,我们也需要与时俱进,但是在项目中又不可能已下载把所有代码进行替换,这就存在了混编的必然性。对于swift和OC的混编,我说一些自己认为需要注意的地方。

  1. 可选类型:swift中最经典的用法,需要注意的就是如果使用了!,一定不能够为nil,否则将会crash;OC转换时一般会为了简单,把成员变量的类型定义为!,那么一定要注意使用该变量时不可以为空
  2. 相互引用:OC引用swift的类,需要在swift的类定义时添加@objc,同时在.m文件中包含swift的对应头文件(productName-swift.h),这样才可以正常使用;而swift引用OC的类,需要在bridge文件中包含对应的头文件,然后就可以在swift中调用。
  3. 宏定义:OC中的宏定义,在swift中一部分可以正常使用,也有很大一部分无法再正常使用,具体的可以参见OC&swift中的宏定义一文。
  4. 数据类型:OC中的所有对象都是一个指针,所以都可以进行强制转换,在swift中将不再允许这种使用;还有就是在swift中数字类型之间将不再进行隐式转换,都需要开发者手动进行显式的转换。
    在swift中使用let定义常量时可以推断类型,如果要设置为特定类型的话,还是需要添加数据类型,这一点和OC中的宏不同。比如要定义长度为44,一定要使用let height:CGFloat = 44,而不能够使用let height = 44,因为后者将会把height推断为Int类型,导致后面使用的时候无法正常使用。
  5. 成员(函数)可见性:在swift中,不存在头文件,所以在类中声明的成员和函数都默认是外部可见的,如果需要定义内部的变量和函数,需要使用private关键字。
  6. delegate:单独说delegate是因为delegate一般会定义为weak类型,而在swift中由于不使用strong关键字,容易让我们忽略了使用weak,导致循环引用。注意在swift中同样存在weak的使用,在定义delegate时不要忘记添加。
  7. struct:swift中的struct在OC中没有对应的数据类型,如果不是必须的话,不建议在接口的地方使用struct。
  8. 初始化方法:swift中对于UIViewControllerUIView等类非继承的初始化方法,都是用convenience关键字,否则需要重新实现父类的初始化方法。

目前想到就这几点吧。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值