除了架构方面的考虑之外,为什么要在 Swift 中标记一些最终的东西呢?

2023-11-29

除了明显的原因,例如如果按照设计,我不希望某些方法、属性或任何内容在继承树中被覆盖,是否还有其他原因来标记事物final在斯威夫特?

例如,是否有性能方面的考虑?我记得在某处读到过一些答案,其中提出了一些建议。


来自 Apple 的 Swift 博客:通过减少动态调度来提高性能

Swift 允许类覆盖其超类中声明的方法和属性。这意味着程序必须在运行时确定正在引用哪个方法或属性,然后执行间接调用或间接访问。这种技术称为动态调度,它提高了语言表达能力,但代价是每次间接使用都会产生恒定的运行时开销。

Using final是通过消除这种动态来提高性能的几种方法之一:

“final”关键字是对类、方法或属性的限制,指示声明不能被覆盖。这允许编译器安全地消除动态调度间接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

除了架构方面的考虑之外,为什么要在 Swift 中标记一些最终的东西呢? 的相关文章

  • Swift:检查 UISearchBar.text 是否包含 url

    如何检查 UISearchBar text 是否包含 URL 我想做这样的事情 if searchBar text NSTextCheckingType Link 但我收到错误 String is not convertible to NS
  • 如何使用 Swift 将“完成”按钮添加到 iOS 中的数字键盘?

    它在默认键盘上工作得很好 但我无法让它在数字键盘上工作 有任何想法吗 据我所知 你不能在键盘部分添加 完成 按钮 你应该添加一个inputAccessoryView to the UITextField or UITextView 如果这就
  • XCode 7 中的 AWSS3TransferManagerUploadRequest

    我今天升级到 Xcode 7 Swift 2 0 我的项目正在使用 CocoaPods 我正在 POD 文件中导入所有与 AWS 相关的文件 我已经设置了桥接标头 并导入了 Amazon 告诉我的所有文件 在升级到 Swift 2 0 之前
  • 领域:结果 和列表

    是否可以转换Results
  • 如何将自定义 C 代码放入 SwiftPM 包中?

    我正在尝试将 C 代码打包到 Swift 模块中 我们称之为CModule 一旦我将其放入项目的基本文件夹中 Swift模块 并配置了搜索路径 我可以在 Swift 文件中自动完成工作 并检测错误 警告 问题是 导入时它无法识别该模块 并且
  • 具有动态警报正文的快速本地通知

    所以我可以创建一个像这样的本地通知 var localNotification UILocalNotification localNotification fireDate NSDate timeIntervalSinceNow 7 loc
  • 如何在 swiftUI (macOS) 中检测按键按下和释放

    除了标题之外没什么可说的 我希望能够在按下按键和释放按键时 在 macOS 上 在 swiftUI 视图中执行操作 在 swiftUI 中是否有任何好的方法可以做到这一点 如果没有 有什么解决方法吗 不幸的是 键盘事件处理是其中一个令人痛苦
  • 如何去掉 UIWebView 上的状态栏背景?

    从 iOS 11 开始 当UIWebView全屏时 状态栏上会出现与屏幕颜色相同的假背景UIWebView背景 有人知道如何摆脱它吗 甚至添加IUWebView到故事板并使其全屏将使状态栏背景出现 我一直在尝试编辑 UIWebView 的大
  • 我们能否检测用户是否通过主页按钮或锁定按钮离开而没有监听 darwin 通知?

    我最近向应用程序商店提交了一个新的二进制文件并将其发送以供审核 但它立即被拒绝并显示以下消息 不支持的操作 不允许应用程序监听设备锁定通知 经过一番挖掘后 我发现我们无法使用 com apple springboard lockstate
  • Xcode 10 Beta 5 — clang:错误:链接器命令失败,退出代码为 1

    有人可以帮我吗 我的项目一切正常 但更新到 Xcode10 Beta5 后 尝试在 iPhone 上运行该应用程序时出现此错误 然而模拟器可以工作 请帮助我 我已经对这个问题进行了网络搜索并发现this https stackoverflo
  • ios - Gamekit 的 GKOctree 未找到元素

    我正在尝试使用GKOctree https developer apple com documentation gameplaykit gkoctree用于高效检索 3D 空间中的对象 然而 以下代码似乎没有按预期工作 import Gam
  • 如何使用完成处理程序等待 firestore 请求的完成

    我正在慢慢地了解完成处理程序 如果我有一个 firestore 查询 如果我想使用完成处理程序 则有点向后工作 当 firestore 查询完成时 我必须使用completion 但它的设置功能仍然让我感到困惑 因此 如果这是一个将闭包作为
  • 在真实设备上展示测试广告

    这是我的代码 let request GADRequest request testDevices kGADSimulatorID XXXX2F32d69CCA859FFB559D0FEA3CF6483D08A6 adView load r
  • 我的游戏中应该有多少个视图控制器?

    我开始使用 spritekit 构建我的第一个游戏 现在我只有一个视图控制器来呈现开始屏幕场景 override func viewDidLoad super viewDidLoad let scene StartScreenScene C
  • Swift 中的 UIAlert 自动消失?

    我有以下代码 Creates Alerts on screen for user func notifyUser title String message String gt Void let alert UIAlertController
  • CGPoint 标量乘法 Swift

    我正在 SpriteKit 中构建一个平台游戏 并将为我的实体实现更新功能 以便它们根据重力和速度移动 但是 我需要使添加的速度量与增量时间成比例 以防止帧速率影响我的实体的移动方式 因此我将导入 GLKit 以便我可以使用标量函数 但是
  • Swift 闭包作为 AnyObject

    我尝试使用这个方法 class addMethod 在 Obj c 中使用如下 class addMethod self class selector eventHandler imp implementationWithBlock han
  • Swift 3 中是否提供内置内部函数?

    我可以在 Xcode 自动完成弹出窗口中看到各种内置函数 如 builtin popount builtin clz 等 我不确定这些是从哪里获取的 单击命令不会导致快速定义或任何文档 Swift 3 中是否有 builtin 或等效的内部
  • Swift 使用哪种通用排序算法?它在排序数据上表现不佳

    我一直在挑选和探索 Swift 标准库sort 其函数为Array类型 令我惊讶的是 我注意到它在已经排序的数据上表现不佳 对数组进行排序Int打乱顺序似乎比对已经排序的同一个数组进行排序快 5 倍 对已打乱顺序的对象数组进行排序比对已按排
  • 在 iOS 11 中创建 Gif 图像颜色贴图

    最近 我在创建 Gif 时遇到了一个问题 如果它太大 颜色就会丢失 然而 感谢 SO 的帮助 有人能够帮助我找到解决方法并创建我自己的颜色图 上一个问题在这里 保存动画 Gif 时 iOS 颜色不正确 https stackoverflow

随机推荐

  • libgdx 在受伤时改变精灵颜色

    我正在使用 libgdx 制作一个小平台游戏 我想让敌人在玩家用武器伤害他们时以红色闪烁 我已经尝试更改精灵颜色和精灵批次颜色但没有成功 它仅将新颜色与纹理之一融为一体 sprite setColor Color RED spriteBat
  • React PDF + Vite 实现错误:Uncaught SyntaxError

    我正在尝试在使用 Vite 创建的 React 项目中使用 React PDF 库 我在渲染 PDF 组件时遇到问题 并且错误非常奇怪 有人可以帮助我吗 Error Uncaught SyntaxError The requested mo
  • 如何使用 Kotlin 协程最大限度地减少 Web 服务调用次数?

    在我的 Android Kotlin 项目中 我在协程中调用 Web 服务 myWebservice只是一个管理 Web 服务调用的自定义类 fun searchForItems userInput String CoroutineScop
  • 如何在react js中将类型数据缓冲区转换为图像

    您好 我接下来有图像类型缓冲区 该数据是一张图像 如何将缓冲区数据转换为图像 当我向 api 发出请求时 它会显示以下数据 任何建议 后端是用node js续集MYSQL制作的 以及 React js 中的前端 我有下一个例子 https
  • 如何调试 w3wp clr.dll 错误

    我的客户在两台生产服务器上安装了 ASP NET 应用程序 与 NLB 平衡 但这无关紧要 两台服务器每 3 4 小时就会崩溃一次 并出现以下事件查看器记录的错误 错误应用程序名称 w3wp exe 版本 7 5 7601 17514 时间
  • C++11:memory_order_relaxed 和 memory_order_consume 之间的区别

    我现在正在学习C 11内存顺序模型并想了解之间的区别memory order relaxed and memory order consume 具体来说 我正在寻找一个无法替代的简单示例memory order consume with m
  • 如何在Python3中像printf一样打印?

    在 Python 2 中我使用 print a d b d f x n g x n 我试过了 print a d b d f x n g x n 在Python2中 print是一个引入语句的关键字 print Hi 在Python3中 p
  • Android中如何同步两个scrollview?

    我有两个水平的scrollview 并希望将它们始终保持在相同的位置 距离 如果用户滚动其中一个 则需要以编程方式滚动另一个 挑战在于 将会发生无限循环 一个将提出另一个 另一个将首先提出 如何设置状态 指示用户启动的滚动仍在进行中 那么其
  • 错误:HHH000299:无法完成架构更新 java.lang.NullPointerException

    我在以下环境中有一个网络应用程序 JPA 2 0 春季3 2 2 MySQL 5 6 11 休眠 4 2 0 CR1 阿帕奇汤姆猫 7 0 35 到目前为止我的配置application context xml文件如下
  • 如何从 github 存储库安装打字稿定义

    如何为像 aurelia validatejs 这样的库安装 typescript defs 就像我所做的那样npm install aurelia validatejs save将其添加到package json and node mod
  • NHibernate - 映射字符串外键

    我继承的旧数据库包含以下表格 Teams TeamId INT PRIMARY KEY Name VARCHAR 30 Players PlayerId INT PRIMARY KEY Team VARCHAR 30 Players 表中的
  • 为什么我的代码在c++中无限循环。我的代码需要反复提示用户

    我的代码需要反复提示用户输入整数 当用户不再想继续输入数字时 输出用户输入的所有正数之和 然后输出用户输入的所有负数之和 这是我到目前为止所拥有的 include
  • 允许将 T* 与 char* 别名。反过来也允许吗?

    Note 该问题已被重命名并减少 以使其更加集中和可读 大多数评论都是指旧文本 根据标准 不同类型的对象不能共享相同的内存位置 所以这是不合法的 std array
  • nhibernate 查询所有实现接口的对象

    例如 如果您有一个 Apple IWhatever 和一个 Orange IWhatever 并且您想找到它们 因为它们都是 IWhatever 那么您需要在 NHibernate 中做什么 它是否完全依赖于 HQL 和条件查询 还是您还必
  • 修改查询字符串而不重新加载页面

    我正在创建一个照片库 并且希望能够在浏览照片时更改查询字符串和标题 我正在寻找的行为经常出现在连续 无限页面的某些实现中 当您向下滚动查询字符串时 会不断增加页码 http x com page 4 等等 理论上这应该很简单 但我想要一些在
  • 将图像字节数据流解码为 JPEG

    我正在努力成功地将 JPEG 图像从字节解码回 JPEG 我从 MJPG 字节流的编码帧开始 我想对其进行解码以便使用 OpenCV 进行操作 我是 Python numpy opencv 等方面的新手 我现在将帧 JPG 数据放在文本文件
  • Vanilla JS Div 碰撞检测

    我的以下实现可以在jsfiddle net 我有四个div 我的目标是使它们可以在页面上拖动 但不允许它们彼此重叠 每个都可以使用 mousemove 侦听器在页面上拖动 container addEventListener mousemo
  • 在哪里可以找到 PyQt5 方法签名?

    我想编写一个带有图形用户界面的小型应用程序 为此我安装了 PyQt5 在教程中 我发现 QMessageBox information 调用已完成 我想更改调用方式 而不是 QMessageBox information self Empt
  • IE 和 Webkit 移动设备中对最大图像像素大小是否有任意限制?

    最近的一个项目使用了非常像素大 5e3px2 但仍然是字节小 100kb GIF 的图像 IE8 和 iOS Safari 都拒绝渲染 两者似乎都知道图像大小 但只是不渲染它们 一个实用的解决方案是对图像进行切片 但是这些浏览器对最大图像像
  • 除了架构方面的考虑之外,为什么要在 Swift 中标记一些最终的东西呢?

    除了明显的原因 例如如果按照设计 我不希望某些方法 属性或任何内容在继承树中被覆盖 是否还有其他原因来标记事物final在斯威夫特 例如 是否有性能方面的考虑 我记得在某处读到过一些答案 其中提出了一些建议 来自 Apple 的 Swift