加入ios 项目已经一个多月了,本篇文章主要介绍IOS开发入门的一些基础知识,帮助想学习iOS开发的人更有效率地学习。
目录
需要的计算机基础
开发语言选择
IOS两种开发语言的异同
Objective-C和swift的相同点:
二者的不同点:
开发环境---XCode介绍
基本信息
Simulator
系统版本(ios版本,设备指定)
单元测试
IOS设计模式与架构
Tuist工具介绍
常用的tuist命令
写在结尾
需要的计算机基础
在学习技术的过程中,无论是前端,移动端,还是服务端,编程语言是基础。当有编程语言基础的时候,再学习Objective-C或者Swift会很容易上手。至少熟悉一门语言(例如Java,C++),如果是只熟悉python或其他角色,那么应该先进行一门常用编程语言的学习,了解语言特性后再开始学习IOS开发。
开发语言选择
早年的iOS开发全部采用Objective-C,2014年,苹果推出新的编程Swift,打算用它取代Objective-C。现在很多互联网大厂的app依然是Objective-C开发或者混合开发,学习使用Objective-C依然是可取的。但我个人建议新手学习使用Swift,因为Swift是苹果力推的编程语言,今后也是iOS开发的趋势。
更多链接:
Swift官方文档:About Swift — The Swift Programming Language (Swift 5.7)
中文版Apple官方Swift教程:协议 - SwiftGG
IOS两种开发语言的异同
Objective-C和swift的相同点:
Objective-C(以下简称oc)出现过的绝大多数概念,比如引用计数、ARC(自动引用计数)、属性、协议、接口、初始化、扩展类、命名参数、匿名函数等,在Swift中继续有效(可能最多换个术语)。
Swift和Objective-C共用一套运行时环境,Swift的类型可以桥接到Objective-C,都是原生的iOS开发语言。
二者的不同点:
- 最大的区别在于 iOS 兼容性,Objective-C开发的应用可以在任何可用的 iOS 版本上运行,Swift 至少需要 iOS 7。
- 在UI开发的易用性上,Apple 引入了SwiftUI,使所有Apple平台构建原生UI变得非常容易,因此Swift 的优势在未来可能会越来越大。
- 编码速度上,Swift 是一种更现代的语言。由于更简单的语法,代码量也比OC少很多,减少代码量不仅可以加快开发过程,还可以减少错误和更快、更好的写测试。
- 稳定性方面,Objective-C 已经存在 30 多年了,自 2016 年以来一直存在。swift至今才6年,这表明Swift 并不成熟,但Apple官方说Swift 也是根据 Apple 在 Objective-C 方面的经验设计的,不断努力让 Swift 成为开发者首选。
开发环境---XCode介绍
基本信息
IOS开发环境一般是XCode,XCode 是iOS 开发必备工具, XCode运行于苹果公司的Mac操作系统下,是苹果公司向开发人员提供的集成开发环境,用于开发Mac OS,iOS的应用程序。XCode 具有统一的用户界面设计,编码、测试、调试都在一个简单的窗口内完成。
安装方式:打开macOS电脑上App Store,搜索XCode进行安装即可
Simulator
通过Xcode有两种不同的方式来访问模拟器。第一种方法是在模拟器中运行应用程序,第二种方法是在不运行应用程序的情况下启动模拟器。
系统版本(ios版本,设备指定)
XCode可以很方便的切换不同型号的设备,初次使用模拟器时模拟器版本与系统版本保持一致,之后系统版本可以根据需要进行修改。
但是根据XCode版本的不同也会对模拟器系统版本有所约束,Xcode 14无法安装低版本iOS模拟器,目前只支持iOS 12.4及以上,如果需要安装低版本的模拟器,需要降低mac版本(一般不会这样),一个简单的办法是,需要单独下载对应版本的模拟器,并修改配置后才能使用(具体教程可以搜)。
单元测试
XCTest是Xcode自带的单元测试框架,我们可以使用该框架做功能性代码的白盒单元测试,以自测并增强代码健壮性。
我们可以在创建项目时直接勾选改选项,创建项目成功过项目目录下即可看到对应的单元测试文件夹。
IOS设计模式与架构
新手需要了解的常见IOS架构有MVC,MVP,MVVM。
综合对比:
- MVC
MVC流程一共有两种,在日常开发中都会使用到。
一种是通过 View 接受指令,传递给 Controller,然后对模型进行修改或者查找底层数据,最后把改动渲染在视图上。另一种是通过controller接受指令,传给Model,View会直接从Model中读取数据而不是通过 Controller。
IOS开发中期待的MVC的样子如上图,由于View和View Controller过度耦合, 导致了实际上我们的MVC的样子看起来更像下图:
Distribution — View和Model虽然分离, 但View和Controller紧耦合.
Testability — Model易于测试, 而View和Controller难以测试.
Ease of use — 相较于其他架构, 代码量最小.
- MVP
(Model-View-Presenter)是MVC的改良模式,和MVC的相同之处在于:Controller/Presenter负责业务逻辑,Model管理数据,View负责显示只不过是将 Controller 改名为 Presenter,同时改变了通信方向。但在MVP中,View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部。
特点:
M、V、P之间双向通信。View 与 Model 不通信,都通过 Presenter 传递。Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。
Distribution — 职责划分明确
Testability — 可测试性非常好, 虽然是以使用笨拙的View(VC)作为代价.
Easy of use — 代码量是MVC的两倍. 但MVP概念清晰.
- MVVM
MVVM模式将Presenter改名为ViewModel,基本上与MVP模式一致。唯一的区别是,它采用了双向绑定(data-binding),View的变动,自动反应在ViewModel,反之亦然。
MVVM模式和MVC模式类似,主要目的是分离视图(View)和模型(Model),有几大优点:
- 低耦合,视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的”View”上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
- 可重用性,可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
- 独立开发,开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
- 可测试,界面向来是比较难于测试的,而现在测试可以针对ViewModel来写。
Distribution — MVVM的View的责任比MVP的View的责任更大
Testability — View Model不关心View的实现, 因此易于测试
Easy of use — MVVM的代码量与MVP相当.
Tuist工具介绍
当一起开发iOS App时,项目文件的冲突可能很快发生,为避免这种情况,可以自动生成项目文件,这就是Tuist发挥作用的地方。 使用Tuist,我们可以根据特定配置在本地生成项目,Tuist可以用于可以用Xcode开发的所有项目类型。简而言之,Tuist是一个命令行工具,可以帮助开发者生成和维护Xcode项目并与之交互。
XcodeGen是一个类似的工具( https://github.com/yonaskolb/XcodeGen ),它还有助于自动创建项目文件。XCodeGen使用YAML or JSON
文件,而Tuist具有Swift
文件作为配置。Tuist拥有Swift文件是一大优势。 在Xcode中打开Project.swift文件有助于简化编译器的所有功能,从而简化编辑过程。
常用的tuist命令
安装tuist
bash <(curl -Ls https://install.tuist.io)
初始化一个基本项目
tuist init --platform ios
更新项目依赖文件
tuist fetch --update
生成项目
tuist generate
使用Xcode编辑配置
tuist edit
写在结尾
以上是我总结的iOS开发需要掌握的一些内容,比较偏基础学习,很多东西也是在完成这篇博客的过程中才学习到的,若有有误的地方,欢迎大家进行指正。