Swift:项目开工了,作为码农的我该干些啥?(二)

712 阅读6分钟

这是我参与更文挑战的第3天,活动详情查看: 更文挑战

前言

上回我聊了项目开始之后,从业务层面上,作为一个iOS开发者需要做的一些准备工作。

这次我们主要了解聊一下从编码、技术上需要考虑的事情。

灵魂拷问继续

1.App适配的最小手机尺寸是多少,App最低支持到iOS哪个版本?

现在基本上做iPhone适配最小应该是在4.7寸屏幕了,而支持到iOS到哪个版本,这个一般和用户群体有关,需要和产品沟通好。

一般默认是当前版本减两个版本,作为系统适配的最低版本,比如现在是iOS14,那么就适配到iOS12,至于为什么这么做,那是因为苹果用户针对iOS的升级还是挺不错了。官方有相关的统计,我这就多说了。

确定好适配的最小尺寸,能够让开发者避免不必要的UI适配,节省体力,我曾经就莫名被测试反馈说他的4寸手机内容都挤在一起了,要我做UI优化,结果查了一下需求,针对4寸不做适配,既然需求上有白纸黑字,那必须秉持能不写的代码就尽量不写。

确定好最低的iOS适配版本,能够抛弃一些历史包袱,拥抱更好更现代的Api,也避免了各种if判断版本。

2.App的环境有几个?

一般情况下,至少有debug和release环境。

在一些规模更大的厂商,环境更多。

管理好多环境,多个baseURL,迅速切换,看似小事,其实是大事。

我个人使用 other swift flags,也不算太高大上。

另外,这个配置项最好是在工程一开始就定下来。

3.Swift VS Objective-C

这个可能是在做iOS项目中核心的问题了,语言的选择,决定了后面编码、迭代、维护、第三方库的选取问题。

伴随App生命周期的事情,也决定了开发者的发量。

新项目,请选择Swift!Swift!Swift!

重要的事情说三遍。

都1202年了,如果新项目还在拿OC开干,真的是得不偿失。

也许你会说,你只会OC,学Swift要花时间与成本,现在这个年代了,iOS开发只会OC这一门语言听起来就不可思议,除非你OC牛到了一个级别。

我个人的想法是深度达不到,至少拿广度去填补,学习一门编程语言遇到天花板或者学不动,止步于此不如打开窗户拥抱世界。

Swift语言简洁易懂高效,是一门非常现代的语言,甚至可以说学会了Swift,你至少潜在的了解了Kotlin和Flutter这两门语言,Python和TypeScript也会涉及一点。

Swift5已经非常稳定,我从Swift2开始接触这门语言,从Swift2升级到Swift3,语法适配那是一个不眠夜,不仅自己写的代码需要改,第三方的也要同步升级,遇到第三方适配不给力的,还要自己写。

完成从Swift3升级的Swif4稍微好一点,标红的也不少。

但是到了Swift5基本上都问题,你不会在消耗过多精力在语言适配升级上。

Swift里面的开源库丰富,得益于Swift语法的先进性,Swift的开源库有一些都是OC做不到的,比如有RxSwift,不没有听说过RxOC,虽然OC时代我们有ReactiveCocoa,不过随着Swift的发布,这个框架也拿Swift重写了。还有很多库也是只有Swift独有的,多了些轮子,少费一些脑细胞,何乐而不为呢?

当然,我并不是说OC一无是处,存在即合理。OC它会在,也会与Swift并存很久,因为有些经典库也只有OC版本,并没有Swift版本。

Swift与OC的混编,在Cocoa这框架下的一个长期过程,在Swift中引用稳定、好用的OC框架,简单又亲切,比如我还是经常使用MJRefresh和MBProgressHUD,因为写的确实简洁有好用,虽然mj_的这种写法很不Swift。

当然需要注意的是,Swift与OC混编,会导致ipa包变大,不过我想在现在64G起步的年代里,除非是纠结KPI,那么一点包大小,不会左右用户的,而且这个包大小除了混编还有其他很多因素,也是有优化空间的。

我个人比较推荐的是Swift去桥接OC的模块,而且现在的XCode12.5中,也不用在生成一个.h文件去桥接OC库了,直接在.swift文件中import即可,比以前还是方便很多的。

同时需要注意的是,我并不推荐在一个OC项目中去引入Swift编写的库,因为Swift有些特性OC中是没有的,比如带参枚举,如果正好桥接的Swift库中有这种枚举,可能都不知道在OC中怎么使用了。

说到底,Swift和OC各有各有的优缺点,只是OC实在太老了,而且未来是Swift的,所以还是拥抱新语言吧,这样在你跨语言的时候,跨度也不会太大。

4.App需要有国际化需求吗?

如果有国际化的需要,App开始的时候就做好规划与配置,会少很多机械性的事情。

我曾经一个App做完了,然后领导突然一拍桌子,要走向国际市场,做国际化,那不眠夜都是血与泪。

5.App权限有哪些是需要的呢?

在App权限开发上,我在参与一次国外实验室检测的国内安卓App看到这样一些评价:

在中国,一个App恨不得将所有权限都申请了管他用还是没有,而在国外,恰恰相反,App只会申请自己需要的权限。

虽然苹果在审核过程中在这方面还是比较严格的,甚至因为权限拒绝开发者的App。

不过还是自己写掂量一下为好。

6.没有什么第6点了,我脑袋写的秀逗了

第2天和第3天写的都是一些经验谈,虽然总结的不算系统,不过暂时就到此了。

如果大家在阅读过程中,有你对项目开工的准备阶段有见解也欢迎留言讨论分享。

下一篇开始,我会梳理一下一些常用的Swift库,那么明天继续。