首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS工程师必看 20 道 面试题

Objective-C,字符串,数组,字典,皆被设计为引用类型。 值类型相比引用类型,最大优势在于内存使用高效。值类型在栈上操作,引用类型在堆上操作。...在Swift和Objective-C混编项目中,如何在Swift文件调用Objective-C文件已经定义方法?如何在Objective-C文件调用Swift文件定义方法?...先给出两种解决方案: 在协议和方法前都加上 @objc 关键字,然后再在方法前加上 optional 关键字。该方法实际上是把协议转化为Objective-C方式然后进行可选定义。...Swift,协议扩展(protocol extension)可以定义部分方法默认实现,这样这些方法在实际调用中就是可选实现了。...试比较Swift和Objective-C初始化方法(init)有什么异同? 一言蔽之,Swift初始化方法更加严格和准确。

3.7K40
您找到你想要的搜索结果了吗?
是的
没有找到

Swift key paths 能力

这周,就让我们来看看KeyPath是如何在Swift工作,并且有哪些非常酷非常有用事情可以让我们去做。 基础 key paths 基本上让我们将任何实例属性引用为单独值。...通过以上扩展,我们现在能够使用一个非常好和简单语法来从任何序列每个元素中提取单个值,使得可以从之前转换我们示例: let articleIDs = articles.map(\.id) let...weak关键字的话,那么就会产生循环引用)。...或许它还能变得更加酷,当上面的代码跟更加先进函数式编程思想结合在一起时候,组合函数 - 因此我们现在可以将多个setter函数和其他函数链接在一起使用。...在接下来文章,我们将介绍函数式编程和组合函数。 总结 首先,看起来如何以及何时去使用swift关键路径这样功能有点困难,并且很容易将它们看做是简单语法糖。

2.5K20

Swift key paths 能力

这周,就让我们来看看 KeyPath 是如何在 Swift 工作,并且有哪些非常酷非常有用事情可以让我们去做。 基础 key paths 基本上让我们将任何实例属性引用为单独值。...Swift 5.2 或更高版本,则不再需要上述扩展,因为现在可以将 key paths 自动转换为函数。...通过以上扩展,我们现在能够使用一个非常好和简单语法来从任何序列每个元素中提取单个值,使得可以从之前转换我们示例: let articleIDs = articles.map(\.id) let...weak 关键字的话,那么就会产生循环引用)。...在接下来文章,我们将介绍函数式编程和组合函数。 总结 首先,看起来如何以及何时去使用 swift 关键路径这样功能有点困难,并且很容易将它们看做是简单语法糖。

1.6K10

iPhone 16 或将配备可拆卸电池 | Swift 周报 issue 57

6) 讨论如何告诉编译器非隔离对象可以安全地传递到参与者域中?内容大概问题概述:作者遇到了一个编译器相关问题,涉及如何在 Swift 安全地在 actor 和非隔离对象之间传递数据。...此外,还介绍了不同 List 样式选项, plain 、grouped 等,并展示了如何使用 Section 进行分组显示,以及自定义 Header 和Footer 。...文章还深入讨论了如何在 List 实现元素添加、移动和删除功能,以及如何自定义左滑操作按钮。最后,提供了完整示例代码和效果图,帮助读者全面理解和应用这些功能。...文章还提供了一个具体案例,演示了如何在包含 UITableView 弹出视图中避免手势冲突。通过这些技术,开发者可以更好地优化 iOS 应用用户交互体验。...欢迎在评论区留言关于我们Swift社区是由 Swift 爱好者共同维护公益组织,我们在国内微信公众号运营为主,我们会分享 Swift实战、SwiftUl、Swift基础为核心技术内容,也整理收集优秀学习资料

10000

swift4.0语法杂记(精简版)

纵观国内外iOS开发界,已经有许多公司直接或间接采用swift开发,使用swift语言开发已成为未来iOS开发趋势。 swift简洁、优雅等优点迅速俘获广大开发者青睐。...1、定义字典 使用let定义不可变字典,使用var定义可变字典。用字面量赋值时,系统会自动判断[]存放是键值对还是要一个个元素。...绝对不能用相加方式对字典进行合并。...、tableView用法 1、 懒加载 swift也有懒加载方式,并且在swift中有专门关键字lazy来实现某一个属性实现懒加载。...十七、枚举 1、定义 在swift,枚举使用是由enum关键字来创建枚举,枚举所有成员都放在一对大括号里面。它为一组相关值定义一个共同类型。使用case关键字来定义一个新枚举成员值。

15.3K90

苹果暂停高端 Vision 头戴设备研发| Swift 周报 issue 56

迁移将分阶段进行,初始范围包括 Swift 项目的基础元素,编译器、核心工具、标准库、核心 API、示例、Swift.org 网站以及官方客户端和驱动程序等。...主要问题是:为什么包类型成员声明不能默认为 package 访问级别? 提议优点: 减少代码显式 package 关键字使用,可能减少约85%。...推荐博文 swift 使用 swift-protobuf 协议通讯,使用指北 摘要: 文章全面介绍了如何在 Swift 利用 Swift-protobuf 进行高效协议通信。...Swift扩展:以及何时使用它们 摘要: 这篇文章介绍了如何使用 Swift 扩展(Extensions),扩展已有的类、结构体、枚举或协议,增加新功能。...文章解释了扩展基本概念及其在所谓逆向建模应用,让你能在无法访问源代码情况下,仍能为类型添加自定义功能层。通过示例展示了如何在不同情境下使用扩展,包括为类型添加新属性、实现协议及提供默认行为。

16630

Swift开发规范-修订版

最近利用了空余时间,对之前版本进行了完善,加入了代码示例及编译效率规约等等,并且考虑到读者对某些规约有些疑惑,也为部分规约增加了说明,推出新版本--《Swift开发规范-修订版》。...正例:kMaxLocaolStoreCount 【推荐】扩展文件,用“原始类型名+扩展名”作为扩展文件名,其中原始类型名及扩展名也使用 UpperCamelCase 风格,如果扩展文件功能不属于同一类...【推荐】尽可能利用访问限制修饰符控制类、方法等访问限制,遵循开闭原则;说明:确定某方法或变量不应该被外部调用,就使用private进行修饰,编译程序阻止外部不合适调用。...包含所有情况,可不加default,遍历枚举类型时 default: break } } } 四、简略规约 【强制】Swift 会被结构体按照自身成员自动生成一个非...【推荐】在代码灵活使用一些地标注释,MARK、FIXME、TODO,当同一文件存在多种类型定义或者多种逻辑时,可以使用Mark进行分组注释,方便通过Xcode顶部面包屑进行切换; 代码示例: /

1.7K50

窥探Swift之数组与字典

语言中,你可以使用关键字let来声明不可变数组,使用var来声明可变数组,下方代码声明Swift可变数组几种方式。...在Swift可变数组和不可变数组归根结底还是变量和常量也就是var和let关键字使用了。你对变量持有读写权限,对常量持有读权限。...二、Swift字典(Dictionary) Swift字典和Objective-C字典除了语法不一样外,用法也是大同小异字典存放就是Key和Value也就是键值对。...下方创建都是可变字典,因为我们使用是var关键字进行修饰,如果你要创建不可变数组,我们就可以使用let关键字进行创建。...具体用法如下,移除元素成功后会元组形式返回被删除值。 ?

1.9K90

市值一夜蒸发8000亿元 | Swift 周报 issue 50

采用影响metatype keypaths 不可逆地添加到旧版本应用,并且需要在 Swift 标准库和运行时中进行更改才能充分利用它们。...4) xx扩展 Any内容概括讨论重点是扩展 Swift “Any”类型以及由于其动态特性而遇到挑战,特别是在使用桥接到 Swift Objective-C 框架时。...人们对允许 “任何” 扩展潜在影响表示担忧,包括意识形态辩论和构建时间等实际考虑因素。尽管之前对此主题进行了讨论,但当前讨论没有找到明确解决方案或巧妙解决方法。...在 SwiftUI 如何构建异步 Button 摘要: 文章介绍了如何在 SwiftUI 中使用 Swift Concurrency 异步功能来创建异步按钮。...作者展示了如何通过简单示例来创建一个按钮,该按钮在每次按下时都会启动一个异步任务。讲解了如何对按钮进行改进,在任务执行期间禁用按钮,以及如何将按钮逻辑提取到一个专用视图中。

15232

Swift进阶七——面向对象编程

面向对象编程(OOP,Object Oriented Programing)有三大特性: 继承 封装 多态 在Swift,面向对象基本单元如下: 枚举 结构体 类 协议 扩展 枚举 在Swift...我们知道,数组、字典等都是可以通过下标来访问里面的元素。比如,数组可以通过Int类型下标访问其中某个元素,字典可以通过Key类型下标访问到某个具体值。...你可以在subscript关键字前加上static关键字来标记类型下标,如果是在类,则还可以使用class关键字,这样可以允许子类重写父类下标实现。...最终,链任何便利初始化器都有机会定制实例,以及使用self 扩展和协议 扩展 extension能力如下: 添加计算实例属性和计算类型属性 定义实例方法和类型方法 提供新初始化器 使现有类型遵循某个协议...下面让我们来比较一下OC和SwiftArray: ? 如上图,左边是OC数组继承体系,右边是Swift数组。

96140

Swift闭包(Closures)

Swift 闭包表达式拥有简洁风格,并鼓励在常见场景中进行语法优化,主要优化如下: 利用上下文推断参数和返回值类型 隐式返回单表达式闭包,即单表达式闭包可以省略return关键字 参数名称缩写 尾随...sorted 函数(The Sorted Function) Swift 标准库提供了sorted函数,会根据您提供基于输出类型排序闭包函数将已知类型数组进行排序。...在上例,它保证了number % 10可以总是作为一个digitNames字典有效下标 key。...因此叹号可以用于强制解析 (force-unwrap) 存储在可选下标项String类型值。 从digitNames字典获取字符串被添加到输出前部,逆序建立了一个字符串版本数字。...每次调用incrementor时,其会amount作为增量增加runningTotal值。

1.9K30

Swift基础 通用

您可以创建一个包含Int值数组,或包含String值数组,或者为可以在Swift创建任何其他类型数组。同样,您可以创建一个字典来存储任何指定类型值,并且该类型没有限制。...注意 始终给出类型参数上骆驼大小写名称(T和MyTypeParameter),指示它们是类型而不是值占位符。 通用类型 除了通用函数外,Swift还允许您定义自己通用类型。...例如,SwiftDictionary类型对可以用作字典类型施加了限制。字典中所述,字典类型必须可哈希。也就是说,它必须提供一种使自己具有独特代表性方法。...因此,Swift可以推断Element是用作此特定容器Item合适类型。 扩展现有类型指定关联类型 您可以扩展现有类型添加协议一致性,如在添加扩展协议一致性中所述。这包括具有关联类型协议。...它迭代容器项目将其相加,并除以容器计数以计算平均值。它显式将计数从Int转换为Double,以便能够进行浮点除法。

10100

Swift基础 结构和类

Swift,您在单个文件定义结构或类,该类或结构外部接口会自动供其他代码使用。 注意 类实例传统上被称为对象。...两者都可以: 定义属性存储值 定义提供功能方法 定义下标,以使用下标语法提供对其值访问 定义初始化器设置其初始状态 扩展将其功能扩展到默认实现之外 符合协议,提供某种类型标准功能 有关更多信息...您引入了带有struct关键字结构和带有class关键字类。...事实上,Swift所有基本类型——整数、浮点数、布尔值、字符串、数组和字典——都是值类型,并作为幕后结构实现。 所有结构和枚举都是Swift值类型。...这意味着,您创建任何结构和枚举实例,以及它们作为属性任何值类型,在代码传递时,总是会被复制。 注意 标准库定义集合,如数组、字典和字符串,使用优化来降低复制性能成本。

8800

Swift 周报 第三十二期

还可以从进程外部提取一些元数据,或者从二进制文件本身挖掘它。使用现有的反射库来完成此操作,例如 swift-inspect 和 swift-reflection-dump。...正在构建工具,复制源文件并对其进行操作,但这是直接来自文件系统和预扩展。具体来说,该工具会遍历有效 .swift 文件并捕获符合给定协议所有类型。...Swift 扩展基于语法内存表示,这意味着无法在不手动执行扩展情况下直接从源文件检索扩展代码。...可能会考虑尝试使用此方法扩展所有宏:SyntaxProtocol.expand(macros:in:) 推荐博文 AngularGradient 在swiftUI使用[9] 摘要: 本篇文章讲解了如何在...为了表示没有值,Swift 引入了 nil 关键字,但在内存表示方式与 Objective-C 不同。文章通过代码展示了 nil 在内存真正表示,发现可选 Int?

27130

Swift开发规范

”作为扩展文件名,其中原始类型名及扩展名也使用 UpperCamelCase 风格,UIView+Frame.swift; 工程中文件夹或者 Group 统一使用 UpperCamelCase 风格,...一律使用单数形式; 命名中出现缩略词时,缩略词要么全部大写,要么全部小写,首字母大小写为准,通用缩略词包括 JSON、URL 等;class IDUtil {}、func idToString()...在代码灵活使用一些地标注释,MARK、FIXME、TODO,当同一文件存在多种类型定义或者多种逻辑时,可以使用Mark进行分组注释 尽量将注释另起一行,而不是放在代码后 其他 不要使用魔法值...形式处理异常,避免使用隐式解包 避免判断语句嵌套层次太深,使用 guard 提前返回 如果 for 循环在函数体只有一个 if 判断,使用 for where 进行替换 实现每个协议时, 尽量在单独...使用 guard 来提前结束条件,避免形成判断嵌套; 善用字典去减少判断,可将条件与结果分别当做 key 及 value 存入字典; 封装时善用 assert,方便问题排查; 在闭包中使用 self

1.5K10

零基础学习Swift数据科学

你可以在Swift类似的方式使用while和其他类型循环。...函数 Swift函数在语法上与Python函数非常相似。这里主要区别是我们使用了func关键字而不是def,并且我们明确地提到了参数数据类型和函数返回类型。 一个基本函数如下: ?...这个生态系统还很年轻,还在发展,你已经可以使用成熟库,Numpy、panda和PythonMatplotlib来填补现有Swift产品空白。...这意味着来自苹果公司Swift团队和谷歌Tensorflow团队工程师将确保你能够在Swift进行高性能机器学习。...利用例子特征,我们做了一个预测,并与真实标签进行了比较。这是用来计算模型损失和梯度。 这时使用梯度下降法来更新模型变量。 记录一些训练数据,以便以后能看到它们。

1.4K20

Swift基础 枚举

Swift基础 - 枚举 翻译自:https://docs.swift.org/swift-book/LanguageGuide/Enumerations.html 枚举为一组相关值定义了通用类型,并使您能够在代码类型安全方式处理这些值...Swift 枚举本身就是一流类型。它们采用了许多传统上仅由类支持功能,例如计算属性提供有关枚举当前值更多信息,以及实例方法,提供与枚举所代表值相关功能。...枚举还可以定义初始化器提供初始大小写值;可以扩展其功能,使其功能超出原始实现;并且可以遵守协议提供标准功能。 有关这些功能更多信息,请参阅属性、方法、初始化、扩展和协议。...与Swift其他类型一样,他们名字(CompassPoint和Planet)大写字母开头。...后面跟着一个检查数字,验证代码是否已正确扫描: 其他产品二维码格式标有二维条形码,可以使用任何ISO 8859-1字符,并可以对长度高达2953个字符字符串进行编码: 库存跟踪系统可以方便地将UPC

8700
领券