Swift面试题2021(附答案)

2025 Swift 最新面试题及答案 关键字用于限制类、属性和方法的继承和重写,从而提高代码的安全性和稳定性。以上是 Swift 和 SwiftUI 中监听属性值变化的几种方法,开发者可以根据具体需求选择适合的方法。这样做可以确保类的实现不会被修改或扩展,从而提高代码的安全性和稳定性。(扩展)允许你在不修改原始代码的情况下,扩展现有类型的功能,包括类、结构体、枚举和协议。是一种强大的工具,用于扩展已有类型的功能,使代码更加模块化、易于维护和扩展。是用于处理不同类型的实例的机制,而泛型则是一种编写灵活、可重用代码的机制。:通过在类的定义前加上。 阅读详情
AI摘要

本文详细比较了Swift和Objective-C在类型系统、编程范式、派发机制、常量定义、Struct与Class差异等方面的区别,以及Swift中显示派发方式的方法。了解两者差异有助于iOS开发者选择和适应这两种语言。

1、Swift和Objective-C有什么区别?

1)Swift是强类型(静态)语言,有类型推断,Objective-C弱类型(动态)语言
2)Swift面向协议编程,Objective-C面向对象编程
3)Swift注重值类型,Objective-C注重引用类型
4)Swift支持泛型,Objective-C只支持轻量泛型(给集合添加泛型)
5)Swift支持静态派发(效率高)、动态派发(函数表派发、消息派发)方式,Objective-C支持动态派发(消息派发)方式
6)Swift支持函数式编程(高阶函数)
7)Swift的协议不仅可以被类实现,也可以被Struct和Enum实现
8)Swift有元组类型、支持运算符重载
9)Swift支持命名空间
10)Swift支持默认参数
11)Swift比Objective-C代码更简洁

2、讲讲Swift的派发机制

1)函数的派发机制:静态派发(直接派发)、函数表派发、消息派发
2)Swift派发机制总结:

  • Swift中所有ValueType(值类型:Struct、Enum)使用直接派发;
  • Swift中协议的Extensions使用直接派发,初始声明函数使用函数表派发;
  • Swift中Class中Extensions使用直接派发,初始声明函数使用函数表派发,dynamic修饰的函数使用消息派发;
  • Swift中NSObject的子类用@nonobjc或final修饰的函数使用直接派发,初始声明函数使用函数表派发,dynamic修饰的Extensions使用消息派发;

3)Swift中函数派发查看方式: 可将Swift代码转换为SIL(中间码)
swiftc -emit-silgen -O example.swift

3、Swift如何显示指定派发方式?
  • 添加final关键字的函数使用直接派发
  • 添加static关键字函数使用直接派发
  • 添加dynamic关键字函数使用消息派发
  • 添加@objc关键字的函数使用消息派发
  • 添加@inline关键字的函数会告诉编译器可以使用直接派发
4、Struct和Class的区别?

1)Struct不支持继承,Class支持继承
2)Struct是值类型,Class是引用类型
3)Struct使用let创建不可变,Class使用let创建可变
4)Struct无法修改自身属性值,函数需要添加mutating关键字
5)Struct不需要deinit方法,因为值类型不关系引用计数,Class需要deinit方法
6)Struct初始化方法是基于属性的

5、Swift中的常量和Objective-C中的常量有啥区别?

Objective-C中的常量(const)是编译期决定的,Swift中的常量(let)是运行时确定的

6、?,??的区别
  • ?用来声明可选值,如果变量未初始化则自动初始化nil;在操作可选值时,如果可选值时nil则不响应后续的操作;使用as?进行向下转型操作;
  • ?? 用来判断左侧可选值非空(not nil)时返回左侧值可选值,左侧可选值为空(nil)则返回右侧的值。
7、Swift中mutating的作用

Swift中协议是可以被Struct和Enum实现的,mutating关键字是为了能在被修饰的函数中修改Struct或Enum的变量值,对Class完全透明。

8、Set(集合类型)的使用场景

Set存储值类型相同、无序、去重

9、final关键词的用法

final关键词的作用:它修饰的类、方法、变量是不能被继承或重写的,编译器会报错。另外,通过它可以显示的指定函数的派发机制。

10、lazy关键词的用法

lazy关键词的作用:指定延时加载(懒加载),懒加载存储属性只会在首次使用时才会计算初始值属性。懒加载属性必须声明(var)为变量,因为常量属性(let)初始化之前会有值。
lazy修饰的属性非线程安全的。

更多好文推荐,欢迎关注 《iOS开发秘籍》 公众号,获取最新的内容

本文内容中部分来自网络,后续会持续更新完善。欢迎一起学习交流!

如需转载,请注明出处

Swift面试题2021(附答案)

Swift面试题2024(附答案) iOS面试还有人要吗?不重要,这里有一些Swift开发基础面试题,有需要的自取,希望能帮到你! 阅读详情

相关推荐

Swift 面试题及答案整理,最新面试题

在Swift中,类的继承关系和协议的实现提供了运行时多态性,使得同一接口可以有多个实现,具体使用哪个实现在运行时通过动态派发来决定。这些函数接受一或多个函数作为输入,并返回一个新的集合,使得你可以用更少、更清晰的代码来执行复杂的操作。通过使用协议,你可以定义一组应该由特定类型实现的相关方法和属性,从而实现接口的抽象和多态性。来调用抛出错误的函数,分别表示:检查错误并使用do-catch处理、将结果转换为可选值(如果发生错误则结果为nil)、断言调用不会抛出错误(如果实际抛出错误,则会触发运行时错误)。

知识极客 6863

Swift中常见的面试题

Swift中常见的面试题汇整

eastWind1101的博客 2287

iOS 面试 Swift基础题

1)赋值也被称为装包的过程(wrap),optional类型会获取当前值的类型和具体值,如int类型的数字100.当一个optional类型被赋值为这个值时,其实optional记录了对应的类型(some)int,和值部分(wrapped)100.2)取值也被称为解包的过程(unwrap),optional根据记录的类型(some)如上面说的int,和值部分(wrapped)100,新建一个some(wrapped)同int(100)返回给程序。在 Swift 中,值类型,存放在栈区;

多分享一点点,共同进步一点点 4086

2021最新—Swift面试题

#初级 String 与 NSString 的关系与区别 怎么获取一个 String 的长度 如何截取 String 的某段字符串 throws 和 rethrows 的用法与作用 try? 和 try!是什么意思 associatedtype 的作用 什么时候使用 final public 和 open 的区别 声明一个只有一个参数没有返回值闭包的别名 高级 一个 Sequence 的索引是不是一定从 0 开始? 数组都实现了哪些协议 如何自定义模式匹配 autoclosure 的作用 编译选项 w

iOSvv的博客 6876

Swift面试题2025(附答案)

AI焦虑时代,iOS面试还有人要吗?不重要,这里有一些Swift开发基础面试题,有需要的自取,希望能帮到你!

Spencer Yang的博客 2094

2020年6月最新iOS面试题总结(答案篇)

之前发了这篇iOS面试总结(2020年6月),没想到挺受大家欢迎,本来是没打算为它写答案,但有几个人建议我最好出一篇答案,提的人多了我就答应了下来。因为最近比较忙,断断续续总算补完了,就有了这篇文章,希望它对大家还有用处。这些都属于参考答案,如果大家感觉有不对不准确的地方也欢迎指出,我会及时更新。 关于面试题 打个比方,如果把找工作理解成考大学,面试就是高考,市面上的“真题”就是模拟试卷。我们会很容易倾向于在面试前寻找对应公司的面试“真题”,重点准备,期待“押题”成功。但实际上,即使面试同一家公司,它会有.

Jul7day的博客 9976

【译】Swift 面试题及其答案

原文:Swift Interview Questions and Answers 原作者:Antonio Bello 原作者介绍: Antonio 拥有丰富的编程经验。他开始编程的时候,内存单位还是 byte 而不是 gigabyte,存储空间还是可选的附加物,最常用的语言还是BASIC。现在,Antonio 的兴趣在于 iOS 应用开发、node.js 后端开发,而且他从

qq_16379603的博客 1557

iOS-2025进阶面试题加答案

文章摘要:本文系统梳理了iOS开发核心技术要点,包括:1) Objective-C内存管理机制,重点解析copy与strong的原理差异;2) 多线程方案比较,涵盖GCD与NSOperation的适用场景;3) Runtime消息转发机制及动态方法实现;4) UITableView性能优化策略;5) Block循环引用解决方案。深入探讨Swift特性,包括:1) Swift Concurrency与GCD的线程管理对比;2) Actor模型线程安全机制;3) 混编环境下的内存管理陷阱;4) 协议扩展方法派发

qq_21048115的博客 5641

Swift算法面试题2022(附答案)

现在面试太卷了,手撕算法成家常便饭,我们虽然不是算法岗,但是常见的简单算法题还是要掌握一点。

Spencer Yang的博客 2312

2020,300道高级iOS开发面试题(最新整理)

这个栏目将持续更新–请iOS的小伙伴关注! 一:知名大厂iOS开发面试题篇 1、腾讯—最新iOS面试题总结 2、百度—最新iOS面试题总结 3、头条—最新iOS面试题总结 4、阿里—最新iOS面试题总结 5、美团—最新iOS面试题总结 6、某大厂—最新iOS面试题总结 7、抖音–最新iOS面试题总结 8、拼多多–最新iOS面试题总结 9、快手–最新iOS面试题总结 10、虎牙–最新iOS面试题总结 11、iOS面试–最新快手iOS面试题 12、iOS面试–字节跳动最新iOS开发面试题 13、(最新)iO.

D_猿员的博客 7029

swift-iOS开发者在面试过程中常见的一些面试题建议尽量弄懂了原理并且多实践

iOS 开发者在面试过程中,常见的一些面试题,建议尽量弄懂了原理,并且多实践

(2026年)iOS Swift面试题,Flutter面试,OC面试题及答案。

第一大类OC面试题 一.设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经验,就是用比较成熟的逻辑去处理某一种类型的事情。 1). MVC模式:Model View Control,把模型 视图 控制器 层进行解耦合编写。 2). MVVM模式:Model View ViewModel 把模型 视图 业务逻辑 层进行解耦和编写。 3). 单例模式:通过static...

田风有的博客 6万+

Swift面试题及答案整理

虽然Swift出现的时间不久,但是它已经成为最流行的编程语言之一了。Swift的知识浩如烟海,但是怎么测试你掌握了多少?通过下面这篇整理关于Swift面试题及答案,可能会对你所掌握的Swift进行一个判断,需要的朋友可以参考借鉴。

2019最新iOS面试题及答案

1. Object-C的类可以多重继承么?可以实现多个接口么?Category是什么?重写一个类的方式用继承好还是分类好?为什么? 答: Object-C的类不可以多重继承;可以实现多个接口,通过实现多个接口可以完成C++的多重继承;Category是类别,一般情况用分类好,用Category去重写类的方法,仅对本Category有效,不会影响到其他类与原有类的关系。 2. import 跟#in...

bie4584的博客 5255

CircuitBreaker Resilience4J 介绍

在分布式环境中,我们的应用可能会面临着各种各样的可恢复的异常(比如超时,网络环境异常),此时我们可以利用不断重试的方式来从异常中恢复(Retry Pattern),使整个集群正常运行。然而,也有一些异常比较顽固,突然发生,无法预测,而且很难恢复,并且还会导致级联失败(举个例子,假设一个服务集群的负载非常高,如果这时候集群的一部分挂掉了,还占了很大一部分资源,整个集群都有可能遭殃)。如果我们这时还是不断进行重试的话,结果大多都是失败的。

zzhongcy的专栏 3540

计算机视觉——SIFT特征匹配

文章目录一、SIFT特征检测原理1.1基本思想1.2二、SIFT特征检测图片兴趣点三、SIFT特征检测描述子匹配四、输入图片检测与之 一、SIFT特征检测原理 1.1基本思想 1.2 二、SIFT特征检测图片兴趣点 代码: 检测结果: 三、SIFT特征检测描述子匹配 四、输入图片检测与之 ...

weixin_43869874的博客 3855

swift面试题及答案

1 MVVM 给MVC解耦 解重 双向绑定 详情解答 https://blog.youkuaiyun.com/sun6223508/article/details/95453167 2Alamofire怎么实现的 使用线程池 文件图片上传代码基于TCP/IP 网络提交基于URLSession.dataTask URLRequest 3frame 和 bounds 有什么不同? ...

代码是贝多芬的音符 1万+

软件工程期末知识点总结【超详细】

生命周期模型(过程模型):瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。2、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N)3、语句覆盖 就是设计足够的调试用例,使得程序中的每个语句至少执行一次。 5、判定覆盖就是设计足够的测试用例,使得程序中每个判定的取“真”分支和取“假”分支至少都执行一次,判定覆盖又称分支覆盖 6、条件覆盖就是设计足够的测试用例,使得程序判定中的每个条件能获得各种可能的结果。7、软件开发时期通常分成4个阶段:总体设计、详细设计、编码和单元测试、综合测试。

这个人好有趣....hh 1万+

Swift 面试题及其答案

Swift 面试题及其答案

skykingf的专栏 2728

Vivado IP核:AXI Uartlite的使用经验分享

1. IP基本设置 在Vivado中,打开IP Catalog,搜索“uart”: 双击“AXI Uartlite”,进入IP配置界面: 这里可以配置IP的具体参数,设置时钟频率、波特率等,完成后,生成IP即可。 2. IP的时序特点 点击下面的链接可以下载该IP核的官方指导文档: https://china.xilinx.com/support/documentation/ip_docume...

weixin_43265132的博客 1万+

【在英伟达nvidia的jetson-orin-nx上使用调试can基础收发-硬件连接-开机自启动can-初步调试】

近期开始学习英伟达的工控板,作为新手还是有很多不同懂得地方,但是一部分它用的linux系统,有点像玩树莓派,通过自己一段时间学习can调试,终于可以简单通信了。开始的时候,自己也是什么都不是很懂,从新手一点点摸索过来,现在使用工控机,简单can通信也已经没有问题了,算是有些进步吧。每一步走的都很艰辛,需要反复验证,才能准去无误,开始以为发送没有问题就没事了,没想到发送可以却接受不行,每一步都要反复确认啊,这个问题会持续关注下吧。

qq_22146161的博客 6120

【面试必备】Swift 面试题及其答案

原文:Swift Interview Questions and Answers 原作者:Antonio Bello 原作者介绍: Antonio 拥有丰富的编程经验。他开始编程的时候,内存单位还是 byte 而不是 gigabyte,存储空间还是可选的附加物,最常用的语言还是BASIC。现在,Antonio 的兴趣在于 iOS 应用开发、node.js 后端开发,而且他从

先勇的博客 1848

从Oracle到腾讯TDSQL数据库升级技术分享

腾讯TDSQL(Tencent Distributed SQL)是一款兼具关系数据库和NoSQL数据库优点的新型数据库,文章主要分享oracle升级为TDSQl数据库技术经验。

u012372850的专栏 2613

【面试必备】iOS-Swift 面试题及其答案

虽然Swift出生才一年,但是它已经成为最流行的编程语言之一了。它的语法很简单,以至于当它发布的时候,JavaScript开发者感觉就像下图一样 事实上,Swift是一种复杂的语言。它包含面向对象和函数方法这两个方面,并且随着新版本的发布在一直进化。 Swift的知识浩如烟海——但是怎么测试你掌握了多少?在这篇文章中,我和这个raywenderlich.com网站的教学团队

magic_castle的专栏 3270

最新Anaconda3的安装配置及使用教程(详细过程)

最新Anaconda3安装使用Anaconda下载方式一:官网下载方式二:清华镜像下载(推荐)Anaconda安装 Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项 Anaconda + Jupyter 基本上已经是大部分机器学习/数据分析等开发者标配的开发环境, 不多介绍,直接进去正题: Anaconda下载 方式一:官网下载 下载地址传送门: 官网首页:https://www.anaconda.com/ 官网下载页:https://www

HowieXue 薛永浩的博客 34万+

【WRF模拟】如何查看 WPS 的输入静态地理数据(二进制格式)?

如何查看 WPS 的输入静态地理数据(二进制格式)?

WW、forever的博客 633
上一篇: iOS App Clips学习笔记
下一篇: iOS汇编入门必备(指令篇)
Skinny Camel
博客等级 码龄15年 71粉丝 42原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值