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

变压器铁心100Hz振动噪声的COMSOL磁致伸缩仿真全流程

磁致伸缩是铁磁材料在磁场作用下发生尺寸变化的现象,也是变压器铁心振动与噪声产生的根本原因。由于应变与磁通密度近似成平方关系,50Hz电网激励下铁心振动基频为100Hz。借助COMSOL多物理场仿真,可将磁场计算结果映射为结构应力和变形,完成“电磁—结构”单向耦合分析。该技术广泛应用于变压器振动噪声预测、结构优化及故障诊断等工程场景。本文从磁致伸缩物理机理出发,系统梳理了材料参数、等效建模、边界条件设置和结果校核等关键步骤,帮助工程师掌握从磁致伸缩到结构变形的完整仿真链路,解决实际工程对标难题。

weixin_33796177的博客 312

保姆级教程:用Python+Mediapipe实时捕捉手势,驱动Unity虚拟手模型(附完整源码)

本文详细介绍了如何利用Python的Mediapipe库和Unity实现实时手势识别与虚拟手模型驱动。通过OpenCV进行图像采集,Mediapipe提供21个手部关键点识别,结合UDP通信协议实现Python与Unity之间的低延迟数据传输。教程包含完整源码、环境配置、核心代码实现及性能优化技巧,适用于VR教育、游戏开发等需要自然交互的场景。

weixin_42531779的博客 361

swift面试题及答案

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

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

密码学:一文看懂Base64算法

Base64常常在我们开发中出现,我们可能只知道它是一串乱码(看不懂的符号),知道有时候知道我们需要把一些数据进行base64编码,有时候需要进行Base64解码。但是却不知道它的作用是什么?它存在的意义是什么?还有它是如何生成的?如何编码和解码?上述的疑问相信在你读完本篇文章之后烟消云散。下面开始正文。Base64是什么?它和加密解密操作有什么关系吗?没错,这就是经过Base64编码后的字符串。对它解码后,我们获得以下内容点个关注,是对我持续创作的最大的鼓励!

Shujie 1万+

Swift 面试题及其答案

Swift 面试题及其答案

skykingf的专栏 2728

【学习笔记】人群归因分数 PAF 以及combined PAF

人群归因风险比例(Population Attributable Fraction,PAF)是一个流行病学指标,它估计了在总体中,如果能消除一个特定的危险因素,能预防多少百分比的疾病或健康结果。简单来说,PAF回答的是:“如果没有这个风险因素,总体中会有多少病例是可以避免的?

weixin_53499537的博客 4900

202505系分论文《论软件系统测试方法及应用》

本文以软件测试方法为切入点,重点论述分层协作、智能赋能、全流程三个维度下传统测试与自动化测试的融合应用。

pccai的博客 1693

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

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

先勇的博客 1848

【ubuntu24.04】auto remove后,重启,kernel panic ,please reboot your computer vfs unable to mount root fs

Ubuntu 24.04系统在运行auto remove后出现内核恐慌(kernel panic)无法启动,显示"VFS: unable to mount root fs"错误。该问题是由于当前内核被清除导致系统无法挂载根分区。解决步骤包括:1)尝试用GRUB菜单中的旧内核启动;2)在GRUB中临时编辑启动参数;3)使用Ubuntu启动盘进行chroot修复;4)使用Boot-Repair工具一键修复。成功启动后,需要重新安装linux-generic等元包,重建initramfs并更新

突围 1209

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

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

magic_castle的专栏 3270

Open3D 进阶(22)间接平差法拟合空间曲线

空间曲线拟合在电力线三维重建中有着广泛的应用,本文利用python使用间接平差法对三维空间曲线的拟合进行代码实现。

点云侠的博客 1058

PCL 直通滤波器【2026最新版】

PCL直通滤波器函数详解以及用于多字段滤波、强度滤波、获取某一时间范围内的点等高阶用法案例分享。博客长期更新,本文最近一次更新时间为:2026年3月11日。

点云侠的博客 40万+
上一篇: 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、付费专栏及课程。

余额充值