iOS开发人员(Swift)的10个最常见问题解答

我去过许多iOS开发人员特定的采访,我被要求解释很多东西而不是编写任何代码。 您可能知道如何构建应用程序或成为编写Swift代码的专家,但这并不意味着您会在iOS开发人员面试中表现出色。 大多数公司在雇用您时都不允许您编写应用程序或编写代码,它们只是问直接的问题,而且需要描述。 因此,请确保您了解开发应用程序时使用的内容。 这是我在iOS开发人员访谈中被问到的10个问题。 我已经从书本和在线资源中收集了答案,并将它们合并在一页上,所以您不会像我一样费劲。

程序需要根据需要分配和取消分配内存。 Swift会自动执行此操作。 Swift不使用垃圾回收器,这是一种常用工具。 ARC是为Obj-C引入的自动引用计数。

一切都是自动管理的,但是您需要了解ARC以避免内存泄漏。

保持周期?

当引用指向另一个引用时,就会发生保留周期,因此它将永远不会从堆中删除。

这主要发生在类和闭包中。 闭包存在于内存中,因此当您使用Self(作为参考)时,需要确保解决保留周期。

弱,无主,强?

除非您另外指定,否则所有Swift属性都是强大的,这意味着除非拥有它们的任何东西都从RAM中删除,否则它们不会从RAM中删除。

另一方面,当您想说“我希望能够引用此变量,但我不介意它消失了,所以我不想拥有它”时,它就很弱 。这看起来很奇怪:毕竟,引用可能不存在的变量有什么意义?

无所有权的意思是“不要介意这个,我将确保将其从内存中删除。”

Model-View-Controller是基于三个作业类别的设计模式:模型,视图或控制器。

模型 :模型负责存储数据并使数据可用于其他对象。

视图 :视图是应用程序的视觉元素。 您在屏幕上看到的内容。

控制器 :控制器执行必要的逻辑,以连接您的视图和模型。 他们处理事件。

在开发应用程序时,您可以使用不同类型的设计模式,但这是最常见的设计模式。

Singleton :Singleton设计模式可确保给定类仅存在一个实例

Singleton Plus:您可以创建另一个对象。 不会强迫您使用共享的。

Facade :Facade设计模式提供了到复杂子系统的单个接口。 假设您有NetworkManager类,可以在其中发出HTTP请求,并且具有JSON响应。 使用Facade,您可以使NetworkManager只专注于网络。

装饰器:装饰器模式可向对象动态添加行为和职责,而无需修改其代码。

适配器:适配器允许具有不兼容接口的类一起工作。 它将自己包裹在对象周围,并公开一个标准接口以与该对象进行交互。

观察者 :在观察者模式中,一个对象将任何状态更改通知其他对象。 可可以两种方式实现观察者模式:通知和键值观察(KVO)。

主要区别在于值类型在传递时会被复制,而引用类型共享引用信息的单个副本。

一个可选的用来让任何类型的变量代表缺乏价值 。 可选变量可以随时保存值或nil。

支持继承, 结构不支持。 是引用类型, 结构是值类型。

强制拆包 ! 操作员—不安全

隐式展开的变量声明-在许多情况下不安全

可选装订 -安全

可选链接 -安全

无合并操作员—安全

警卫声明 -安全

可选模式-安全

自动布局基于放置在这些视图上的约束来动态计算视图层次结构中所有视图的大小和位置。

排序 :排序数组

地图 :转换数组内容

过滤器 :根据某些条件过滤阵列

减少 :将集合中的值减少为单个值

延迟加载意味着属性值的计算直到第一次需要它时才进行。

核心数据是用于管理对象图的框架。 对象图无非是互连对象的集合。 该框架擅长管理复杂的对象图。

并发同时多个

序列号 :先到先得,先入先出,订购