swift-oc混编分享

软件环境:Xcode 13.2
创建时间:2022年 03月5号
适用范围:中小型项目(3~5人就能拿得住的项目)

这篇文章都说了什么

  1. swift和OC混编的思路
  2. 混编过程碰到了哪些问题

写作场景:

很久没有静下心来写点东西了,工作虽然很忙,但是还没忙到没时间沉淀总结,只是自己偷懒。年后,公司在筹划一些新的产品,开发中的都是一些小优化,白天很多闲暇。

swift5以来,这门语言已经比较稳定,出于公司项目的长远考虑,是时候使用它沉淀一些东西了。但是现在的项目已经做了好几年,接近20W行的OC代码,况且只是最近几周不太忙,如想替换成swift几乎是不可能的。或许,混编是当下最好的选择。


目标:

长远:逐渐过度成以swift为主的项目
近期:少量尝试,重在稳定,以弱业务的页面为主


执行:

前期准备:如果用swift写新业务的时候,你用什么工具/函数/扩展之类的时候,没有直接可用的,会使得你推swift的难度变大,效率降低。所以先出一套swift基础框架,提供工具类、函数库、UI框架、数据持久化、网络等能力支撑,这时再推swift会顺风顺水。实际使用中再不断的打磨、迭代,也为长期的规划打基础。后面的文章中,会挑出一些组件,分享给大家(实现思路、demo)

开始执行:为了保证安全稳定,从个人中心一些弱业务或非业务功能开始尝试转swift,避免一些未知问题影响到用户的使用。如果是新功能,且相对独立一点的,也逐渐的尝试使用swift。当然,如果你swift学的比较好了,做全新的APP时,就直接以swift为主了。


几个问题:

1、swift和OC的互相调用

1)通过下面的h文件引用OC的类,声明后,swift中即可调用,其中“projectName”是项目名,一般首次添加swift文件会提示创建,后面也可手动配置,教程很多。

projectName-Bridging-Header.h

2)通过引用下面的文件,即可引用swift中使用@objcb标记类及函数、属性。文件是隐藏的,直接import即可。为了方便,我直接在PCH文件里面引用了一下。

#import "projectName-Swift.h"

3)swift中的扩展extension,为了保证一些逻辑的统一,或者说不同时维护两套逻辑,我们实现的一些swift的扩展,也希望OC能调用。这时候,@objcb就可以啦,但是也有例外。swift中,String的扩展OC无法通过NSString使用,类似几个Array、Dictionar也一样,还没什么好办法。其他的,如UILabel、UIFont、UIColor、UIImage等可通用的扩展,我都用swift实现了一遍,感受swift特性的同时,也大写了一下使用swift的决心。实现的时候,保证函数名不变,把OC的实现删掉,这样以后就可以不断的积累和沉淀swift函数库了。


接下来:

后面我会分别介绍swift开发的一些小工具,自己写的,经过了一些实际业务的打磨,分享给大家。希望在效率和质量上不断的提升。

你可能感兴趣的:(iOS,swift,ios,objective-c)