IOS小白入门指南

article/2025/1/11 21:58:09

        加入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开发语言。

二者的不同点:

  1. 最大的区别在于 iOS 兼容性,Objective-C开发的应用可以在任何可用的 iOS 版本上运行,Swift 至少需要 iOS 7
  2. UI开发的易用性上,Apple 引入了SwiftUI,使所有Apple平台构建原生UI变得非常容易,因此Swift 的优势在未来可能会越来越大。
  3. 编码速度上,Swift 是一种更现代的语言。由于更简单的语法,代码量也比OC少很多,减少代码量不仅可以加快开发过程,还可以减少错误和更快、更好的写测试。
  4. 稳定性方面,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。

综合对比:

  1. MVC

        MVC流程一共有两种,在日常开发中都会使用到。

        一种是通过 View 接受指令,传递给 Controller,然后对模型进行修改或者查找底层数据,最后把改动渲染在视图上。另一种是通过controller接受指令,传给Model,View会直接从Model中读取数据而不是通过 Controller。

IOS开发中期待的MVC的样子如上图,由于ViewView Controller过度耦合, 导致了实际上我们的MVC的样子看起来更像下图:

Distribution — View和Model虽然分离, 但View和Controller紧耦合.

Testability — Model易于测试, 而View和Controller难以测试.

Ease of use — 相较于其他架构, 代码量最小.

  1. MVP

(Model-View-Presenter)是MVC的改良模式,和MVC的相同之处在于:Controller/Presenter负责业务逻辑,Model管理数据,View负责显示只不过是将 Controller 改名为 Presenter,同时改变了通信方向。但在MVP中,View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部。

特点:

MVP之间双向通信。View Model 不通信,都通过 Presenter 传递。Presenter完全把ModelView进行了分离,主要的程序逻辑在Presenter里实现。

Distribution — 职责划分明确

Testability — 可测试性非常好, 虽然是以使用笨拙的View(VC)作为代价.

Easy of use — 代码量是MVC的两倍. 但MVP概念清晰.

  1. 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开发需要掌握的一些内容,比较偏基础学习,很多东西也是在完成这篇博客的过程中才学习到的,若有有误的地方,欢迎大家进行指正。


http://chatgpt.dhexx.cn/article/Elfj0yBr.shtml

相关文章

java ios开发_使用Java开发iOS应用

自从使用Objective C开发原生的iOS应用以来,就有许多使用别的语言来开发iOS应用的替选方案。比如说,下面就列出了一些: PhoneGap, 使用HTML/JS来开发 RubyMotion,使用Ruby ionic,使用AngularJS开发 我最近发现的一个的是RoboVM,你可以通过它来用Java开 自从使用Objective…

IOS开发进阶学习资料(提升必备)

最近整理了下IOS学习资料&#xff0c;包含了入门、进阶、性能优化、面试和学习书籍&#xff0c;算是比较全面的&#xff0c;在这里分享给大家&#xff0c;希望对大家有用。 先晒出IOS学习路线图&#xff0c;大家照着图谱修炼。 学习社区 objc中国 learn IOS Ray Wenderlich…

iOS开发进阶(二):走近iOS原生开发

文章目录 一、前言二、知识储备三、 Object-C四、启动流程五、拓展阅读 一、前言 在应用 uni-app 进行跨平台APP开发过程中&#xff0c;发现并不支持视频播放小窗功能&#xff0c;且插件市场提供的插件用户体验不好&#xff0c;遂决定自行开发 uni-app 原生插件。 uni-app原生…

iOS开发学习系列(1)———Swift语言入门

缘起 对于成为全栈开发者的目标而言&#xff0c;很好奇自己几年前怎么就没想过iOS开发的事情。iOS好歹也是移动操作系统两巨头之一。反思了下&#xff0c;有可能是因为之前对Object-C太无感导致的。现在趁着Swift&#xff0c;借这个机会重新整理iOS的开发。本系列虽然是iOS开发…

IOS开发学习资料集合(开发必备)

最近整理了下IOS学习资料&#xff0c;包含了入门、进阶、性能优化、面试和学习书籍&#xff0c;算是比较全面的&#xff0c;在这里分享给大家&#xff0c;希望对大家有用。 先晒出IOS学习路线图&#xff0c;大家照着图谱修炼。 学习社区 objc中国 learn IOS Ray Wenderlich…

iOS开发学习路线

那么现在说正题,如何成为负责任的开发者? 关注作者:点击关注二字可以找到大神组织首先要负责,对自己的项目负责。如果是自己新开的项目,要保证随时都能清晰的想到项目当中每个地方是怎么实现的,测试或者用户反馈了问题以后,能立马想到可能的错误原因。 如果是接手的项目…

对项目需求管理的认识和体会

下面是对一位项目经理关于需求管理的访谈&#xff1a; 做了那么多个项目&#xff0c;我深深感到对项目的需求把握管理好了&#xff0c;是项目成功的关键。对需求的管理大概有那么几个活动&#xff0c;首先是需求获取&#xff0c;这是一个确定和理解客户的需要和期望的过程&…

项目范围管理:WBS

创建工作分解结构是把项目可交付成果和项目工作分解成较小的、更易于管理的组件的过程。工作分解结构&#xff08;WBS&#xff09;是项目管理的基础&#xff0c;项目的所有规划和控制工作都必须基于工作分解结构。如果没有工作分解结构&#xff0c;就谈不上项目的进度计划、成本…

项目治理-项目需求范围管理:范围蔓延、镀金

范围蔓延、镀金 场景1&#xff1a; “甲方需要做一个App电商系统&#xff0c;项目对接非常满意&#xff0c;快项目结尾的时候&#xff0c;甲方的老板说&#xff0c;听说现在流行小程序&#xff0c;这个电商系统一定要在小程序上面也可以运行&#xff0c;如果不支持&#xff0…

怎样使用GitLab管理项目?

1. issue 介绍 一般 master 分支默认是被锁住的&#xff0c;其目的是保护该分支。普通开发人员可以创建 issue 后建立对应的分 支然后去完成任务。完成issue 后便要合并分支&#xff0c;只需发送 merge request ,等待 owner 审核才能合并到 master 分支上。合并的过程中可能…

软件需求管理过程

软件需求管理过程 软件需求管理过程 软件需求管理的过程 需求确认(确认需求规格) 需求获取–>需求分析–>需求规格编写–>需求验证需求变更(开发过程中的需求管理) 需求获取&#xff0c;需求分析&#xff0c;需求规格编写&#xff0c;需求验证&#xff0c;需求变更…

项目管理——需求收集与管理

项目管理——需求收集与管理 VS 需求收集对于产品经理来说&#xff0c;都已经属于老生常谈了。在产品的立项和设计前需要先做需求调研&#xff0c;在这里我们就来谈谈如何进行需求收集和管理。 一、需求收集目的 需求收集的目的就是了解用户目前所需要的是什么&#xff0c;最迫…

项目管理--需求分析

项目管理-需求分析 一、需求分析概述软件需求分类 需求分析是什么? 二&#xff0c;需求分析的任务需求分析的任务主要有两个方面&#xff1a;需求分析的困难&#xff1a;需求分析过程需求管理 三&#xff0c;需求分析案例需求分析的过程包括&#xff1a;exp:需求陈述需求陈述中…

谈产品研发项目需求及需求变更管理

公司经过2年多所研发的产品&#xff0c;终于正式试用了&#xff0c;中间经历过了无数次调整&#xff0c;产品研发过程是不断迭代的过程&#xff0c;发生需求变更、设计变更的情况非常多&#xff0c;为不影响创新和开拓思路&#xff0c;研发处在开放状态&#xff0c;当前阶段是时…

需求管理搞不定?这4招帮你解决项目需求管理

当你坐下来分析一个失败项目的时候&#xff0c;会发现很多项目在需求分析阶段就出现了问题&#xff0c;而需求变更也或多或少和开始的需求有关。 但项目需求就像神秘人一样&#xff0c;不知道是什么、不知道从哪来、不知道想干啥&#xff0c;搞清项目需求简直像一场读心术… …

软件项目管理 第五讲软件项目需求管理

文章目录 项目案例软件需求管理的基本概念什么是软件需求&#xff1f;关于软件需求的注意事项软件需求的重要性 软件需求开发软件需求工程的产生什么是软件需求开发&#xff1f;软件需求开发的任务软件需求开发的过程步骤1:收集和获取软件需求步骤2:软件需求建模步骤3:文档化软…

项目管理学习总结(2)——需求收集和管理

需求收集对于产品经理来说&#xff0c;都已经属于老生常谈了。在产品的立项和设计前需要先做需求调研&#xff0c;在这里我们就来谈谈如何进行需求收集和管理。 一、需求收集目的 需求收集的目的就是了解用户目前所需要的是什么&#xff0c;最迫切需要去解决的问题是什么&#…

END-TO-END OPTIMIZED IMAGE COMPRESSION论文阅读

END-TO-END OPTIMIZED IMAGE COMPRESSION 文章目录 END-TO-END OPTIMIZED IMAGE COMPRESSION单词摘要&#xff1a;1.INTRODUCTION2.CHOICE OF FORWARD, INVERSE, AND PERCEPTUAL TRANSFORMS3.OPTIMIZATION OF NONLINEAR TRANSFORM CODING MODEL3.1 RELATIONSHIP TO VARIATIONAL…

[论文解读] Concolic Testing for Deep Neural Networks

Concolic Testing for Deep Neural Networks 文章目录 Concolic Testing for Deep Neural Networks简介摘要介绍相关工作DNNs的鲁棒性Concolic测试与相关工作对比深度神经网络 DNNS的覆盖测试激活模式形式化测试覆盖标准测试覆盖率指标 具体覆盖要求Lipschitz连续性神经元覆盖率…

【论文翻译】 Clustering by Passing Messages Between Data Points

论文题目&#xff1a;Clustering by Passing Messages Between Data Points 论文来源&#xff1a;Clustering by Passing Messages Between Data Points 翻译人&#xff1a;BDMLCQUT实验室 Clustering by Passing Messages Between Data Points Brendan J. Frey* and Delbert …