iOS初学者需要掌握的10种技能和知识

图片

iOS开发人员的职业现在需求旺盛,报酬丰厚,甚至可能很时尚,因此吸引了很多人。

我和我的同事来找许多空缺职位的候选人来面试,我清楚地看到许多新来者都缺乏基本知识或只是不确定的知识。 尽管Internet上有很多文章,书籍和课程(收费的和免费的),您可以从中获得必要的知识,但并不总是很容易理解应该重点关注哪些主题。

在本文中,我将分享有关我认为对于初学者iOS开发人员重要的技能和知识的信息,尝试解释为什么需要这些技能和知识,并提供学习材料的链接。

该材料主要面向那些想要开始培训,填补空白或了解他们愿意作为iOS开发人员的人。 我将尝试用简单的词来解释一切。

我必须马上说,我将提供的链接的大多数材料都是英文的。 我知道,一开始学习英语可能会变得越来越困难,但后来会见效-您不能总是找到俄文的相关材料。

第一步


在研究以下主题之前,我建议准备基础,即, 从斯坦福大学学习 (收听并复制所有作业) 免费的CS 193P课程,并阅读Apple网站上的Swift文档

如果您不理解或记住所有主题,这是绝对正常的,但是您将对设备的iOS应用程序和Swift语言结构有一个基础的结构化基本了解。 从一开始就花时间在这些事情上,您将可以更轻松地添加有关每个主题的知识。

1.自动布局,情节提要,代码布局


创建基于布局的应用程序界面是iOS程序员的一项基本技能。 您不仅应该知道组装界面的主要组件(UIView,UILabel,UIButton,UIImageView等),而且还应该知道如何在屏幕上排列它们以便在不同尺寸的屏幕上获得所需的位置和尺寸,包括转动设备时。 为简单起见,我将重点介绍3种创建界面的方法:

  • 通过Interface Builder的可视化方式
  • 通过代码充分描述接口
  • 当通过Interface Builder输入屏幕的部分内容并将其设置移至代码时,则为组合选项。


仅通过StoryBoard上的Interface Builder进行界面布局的技能可能还不够。 除了您无法通过StoryBoard进行所有操作外,您还需要了解几个开发人员正在处理大型应用程序,并且使用版本控制系统(通常是Git)来组合其工作结果。 当几个人处理一段代码时,他们的工作结果并不总是能够自动组合。 如果接口是由程序员根据代码设计的,则与由Interface Builder生成代码时相比,合并更加容易和快捷。

要掌握该主题,我建议:


如何理解您已经充分掌握了该主题? 取得您在iPhone上使用的任何应用程序。 您可以从标准的音乐开始,例如Apple Music。 尝试完全重现您看到的一个或几个屏幕以及它们在旋转时的行为。

图片

2. ViewController的生命周期


为简单起见,假设移动应用程序中的每个屏幕都是ViewContoller,或者更确切地说,它是UIViewContoller类的后代。 对于iOS开发人员而言,了解屏幕的生命周期是如何工作的,或者更确切地说,在准备,外观,旋转,破坏和其他屏幕条件期间将执行哪些方法非常重要。

图片

相关资料:


3.使用UITableView和UICollectionView


大多数移动应用程序界面都是基于表的。 您应该能够在屏幕上添加表格,准备单元格,实施必要的协议,分配委托和数据源。
另外,重要的是要理解为什么需要标识符,以及单元重用的含义。

相关资料:


4.大中央派遣


应用程序应该能够同时解决几个问题。 例如,当用户浏览新闻提要时,将从网络下载数据,并且不会阻塞界面。

如果您要为iOS编程,Grand Central Dispatch是重要且相当困难的主题之一,您绝对应该知道。

相关资料:


5.联网,从JSON接收数据


您最喜欢的哪些应用程序在没有互联网连接的情况下仍可以继续运行? 我认为,如果放弃游戏,您会发现大多数应用程序都可以处理来自网络的数据。 在这种情况下,iOS初学者应该具备什么能力? 我认为创建网络请求,接收和处理数据。 对URLSession的了解应该足以开始。 这是最基本的方法,我建议首先掌握它的应用。 知道像Alamofire这样的流行库的存在可能并不合适 ,但是这不应该损害URLSession。

通常,通过网络到达应用程序的数据以JSON格式传输。 您需要能够接收和处理这些数据,例如,基于该数据派生一些列表。 同时,建议您不仅知道如何借助一种流行的库(例如SwiftyJSON)来做到这一点 ,而且还拥有熟悉Codable的标准语言工具。

Audrey Tam的一篇文章中介绍有关使用URLSession的一些知识。 关于使用JSON的材料很多;您可以参阅Anand Nimje文章

为了在实践中学习该主题,我建议您制作一个具有天气预报的应用程序,其中有一个用于输入城市名称的字段,创建了一个API请求(适用于OpenWeatherMap ),并且根据接收到的JSON显示了天气信息。

6.知识迅捷


在这里阅读文档会很有帮助。 学习Swift可能需要一些时间,但是在出路时,您应该坚持并可以自由浏览以下主题:

  • 结构
  • 转移
  • 协议
  • 馆藏
  • 使用集合的方法(枚举,排序,过滤,映射,归约等)
  • 使用选项和例外

这些主题需要在文档中指定的卷中已知和掌握-所有这些都将在工作中派上用场。 很好,如果您可以针对每个主题举一个可以在他们的帮助下解决的问题的例子。

仔细分析结构和类之间差异 -不仅因为在面试中很可能会问到您这个问题,而且在您的工作中也很有必要。

除了阅读Swift上的文档外,您还可以观看Alexei Skutarenko 在Swift上视频马拉松 。 这项马拉松比赛不会取代文档的阅读,因为它并未公开所有主题,并且还在4年前发布了,在此期间,Swift进行了较小的更改。 阿列克谢(Alexey)做得很出色,有很多有用的材料和思想。

7.强弱链接,ARC,内存泄漏


如何确保应用程序没有内存不足的问题?
什么是链接,链接的类型是什么? ARC到底是做什么的?如何避免“保留周期”?这是怎么回事? 主题并不复杂,但非常重要。 您可以熟悉自己,例如, 在SwiftBook中

8.协议和代表


在为iOS开发时,您经常会遇到委派,或者更确切地说是将责任从一个对象转移到另一个对象。 例如,经典任务是带有单元格的表,每个单元格都有一个按钮“将项目添加到收藏夹”。 您必须能够针对这种情况创建协议,任命一名代表,并为他实施协议支持。

相关资料:



9.架构方法:MVC,MVVM,MVP,VIPER


为了在开发过程中易于创建和支持软件产品,将它们划分为单独的模块。 例如,一个块仅负责处理数据,另一个负责外观。 这种方法具有许多优点,例如,您可以更改外观而无需改动逻辑,或者,如有必要,可以再次更改数据源,而无需更改应用程序的其余部分。 显然,这些方法不仅在iOS中使用,我还会说更多-它们来自其他平台。 有几种行之有效的方法可以在不同模块之间共享责任;对于使用iOS,我建议您对MVC和MVVM有一个很好的了解。

在采访中,我经常听到关于MVC的不好,因为它是Massive View Controller,而MVVM更好。

相关资料:


10.数据存储,核心数据


如上所述,许多应用程序都处理来自网络的数据。 您需要能够将此数据保存在设备上,以及保存用户输入的内容。 我认为,初学者iOS程序员存储数据的基本方法包括:


此列表中没有SQLite,Realm,Firebase。 如果需要,可以熟练掌握它们,但肯定不会损害上述方法。 如果您已经有使用SQL的经验,那么我建议您提前在iOS上使用SQLite,您很有可能会发现这种存储方式更加方便。

相关资料:


总结


我相信,平均分配上述主题并将其投入每周20小时的学习中,真的有可能在4-5个月的时间内从头开始掌握所有主题。
有了这些丰富的知识,您就可以开始接受小型应用程序的订单或进行面试。 例如,如果有空缺,我们会将具有这方面知识的人员带入我们的流动团队。

编写完成的申请


我确定 iOS开发人员应该拥有自己的应用程序。 我们正在谈论的是一个完整的应用程序,它可以解决一些必要的问题(如果只为应用程序的作者解决,就可以)。 在编写应用程序的过程中,您将遇到寻找合适解决方案的创造性任务,这不仅使您能够更好地巩固理论知识,而且会给您带来乐趣。

不要害羞您的申请,在面试中向他们展示。 即使应用程序很简单,即使设计是由我们自己完成的,也并不是最漂亮的应用程序(如果需要该应用程序,则可以扩展功能,并且可以对设计进行重新设计)。

聚苯乙烯


请在评论中告诉您您认为哪些主题对新iOS开发人员的开发很重要

Source: https://habr.com/ru/post/zh-CN437300/


All Articles