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

步进电机原理及梯形加速算法

步进电机重理解与梯形加速算法

weixin_39912966的博客 1322

红日-VulnStack靶场-ATT&CK(二):从Weblogic漏洞到域控渗透实战

本文详细解析了红日安全团队VulnStack靶场中从Weblogic漏洞到域控渗透的完整攻击链。通过实战演示Weblogic反序列化漏洞利用、Cobalt Strike持久化控制、域内信息收集及PsExec横向移动等关键技术,复现了企业内网渗透的典型场景,并提供了防御建议。

tgb3456789的博客 936

swift面试题及答案

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

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

C语言专升本编程题

湖南省专升本选拔考试,C语言程序设计内部习题

weixin_45729947的博客 2116

Swift 面试题及其答案

Swift 面试题及其答案

skykingf的专栏 2728

汽车ECU开发必看:AUTOSAR存储管理模块NvM的5个实战技巧

本文聚焦汽车ECU开发中AUTOSAR存储管理模块NvM的实战应用,分享了五个源自量产项目的核心技巧。内容涵盖Class 3配置的精细调优、稳健冗余策略的构建、读写性能的毫秒级优化、典型工程问题的解决方案以及高效的集成测试方法,旨在帮助开发者规避常见陷阱,实现可靠、高效的存储方案。

weixin_29192211的博客 275

SAP 采购申请、采购订单的审批策略

采购申请、采购订单的审批策略 采购申请审批 PR审批可以分为:含分类、无分类 1、无分类PR审批: A、后台配置: 设置批准代码(批准代码可以设置多级审批): 发布批准标识使用系统已有的 “2 询价/采购订单”: 新建采购申请审批策略Z1(仅设置1级审批,一共可以设置8级审......

willieyuan的博客 2万+

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

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

先勇的博客 1848

强化学习(Reinforcement Learning)与动态系统控制方法

一个具体的 RBC 的例子是自动驾驶汽车中的交通规则。在训练过程中,代理通过与环境交互获取奖励信号,并学习如何在某个状态下采取最佳的行动,以最大化长期的累积奖励。在化工过程中,通过对生产过程中的温度、压力、流量等参数的控制来实现产品的质量和产量的提高。需要注意的是,以上代码只是一个简单的示例,实际的 MPC 系统可能会更加复杂,并包含更多的模型预测和控制算法来实现更复杂的控制任务。需要注意的是,以上代码只是一个简单的示例,实际的自动驾驶汽车系统可能会更加复杂,并包含更多的规则和条件来确保安全行驶。

AI天才研究院 4062

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

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

magic_castle的专栏 3270

【麒麟系统】Rsync文件复制与同步工具

本文摘要: Rsync是一款Linux/Unix系统标配的高效文件同步工具,支持增量传输、SSH加密、断点续传等核心功能,相比SCP具有显著优势。文章详细解析了Rsync的五种标准语法格式和常用参数组合,重点介绍了本地同步、远程SSH同步(推送/拉取)的实操方法,并提供了密钥免密登录配置方案。针对企业运维场景,还讲解了文件过滤、镜像同步(--delete)、迁移同步(--remove-source-files)、空运行预校验(--dry-run)等高级功能,以及带宽限速等优化技巧,帮助用户安全高效地完成各类

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 998

常用元器件使用方法3:电平转换芯片74LVC1T45的使用方法

介绍: 74LVC1T45是一个单位双向可控电平转换芯片。   芯片特性: 1、宽供给电压范围:1.65V到5.5V; 2、3.3V时,可输出24mA电流; 3、最大16uA电能损耗; 4、高噪音抑制;   型号:   引脚: VCC(A) 1 A端和DIR电源 GND 2 地 A 3 数据输入/输出 B 4 ...

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

余额充值