为什么 didSet 中没有无限循环?

2023-12-12

在我的 FirstViewController 中,我有一个指向 SecondViewController 的按钮,将数据传递到 SecondViewController 中的属性。该属性有一个属性观察者,在设置时创建 SecondViewController 的新实例。

虽然它按我想要的方式工作,但我想知道为什么它没有陷入无限循环,永远创建第二个 ViewController 的实例。这样做是好的做法吗?

第一个视图控制器:

class FirstViewController: UIViewController {
    @IBAction func something(sender: UIButton) {
        let destination = storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as SecondViewController
        destination.selected = 1
        showViewController(destination, sender: self)
    }
}

第二个视图控制器:

class SecondViewController: UIViewController {
    var selected: Int = 0 {
        didSet {
            let destination = storyboard?.instantiateViewControllerWithIdentifier("secondViewController") as SecondViewController
            destination.selected = selected
            showViewController(destination, sender: self)
        }
    }

    @IBAction func something(sender: UIButton) {
        selected = 2
    }
}

如果您查看 Apple 的 Swift 文档Swift 编程语言 - 属性,苹果表示:

Note:

如果您向其自己的 didSet 观察器内的属性分配一个值,则您分配的新值将替换刚刚设置的值。

因此,如果您在第一行放置一个断点didSet块,我相信它应该只被调用一次。

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

为什么 didSet 中没有无限循环? 的相关文章

  • Swift 结构类型集

    说我有一个struct 可以是任何东西 struct Cube var x Int var y Int var z Int var width Int 然后我该如何创建一个Set这些点中 是否存在两个具有相同属性的对象 let points
  • 在 Safari 中快速打开链接

    我目前正在我的应用程序中打开链接WebView 但我正在寻找一个打开链接的选项Safari反而 它不是 融入 Swift 但你可以使用标准UIKit方法来做到这一点 看看 UIApplication 的openUrl https devel
  • 如何在 iPad 应用程序上禁用横向方向?

    我创建了一个全新的单视图 iOS 通用 Swift 应用程序 然后 我在应用程序设置中取消选中 横向左 和 横向右 我在 iPhone 上运行了它 万岁 无论我如何旋转手机 它都会保持纵向模式 然后我在 iPad 上运行它 它会旋转到任何内
  • 重新组织链式可观察量

    我有一大块链接的 Rx 可观察量 当通过选择表视图行时会触发这些可观察量table rx modelSelected 我希望能够打破这个逻辑 因为我目前必须在flatMapLatest 因为这是流程的 第一步 感觉不对 我必须在后续执行更多
  • dyld:无法加载插入的库,但可以在模拟器和另一部 iPhone 上使用

    所以我在过去的几个小时里在我的应用程序上编码 在某个时候我决定在我的 iPhone 8 13 3 1 上启动我的应用程序而不是使用模拟器 13 3 它立即崩溃并出现以下错误 dyld warning could not load inser
  • Swift UIImage 转换为 PDF

    在我的应用程序中 必须从 iPad Gallery 出售 UIImage 并将其转换为 PDF 并保存在服务器端 我可以选择图像并将其发送到服务器端 但后端说 pdf 为空 空数据 我还在控制台中看到警告 错误 发现扩展时遇到 发现 错误
  • 在 Swift 中将时间数组从 24 小时转换为 12 小时

    我有一个像这样的数组 arrayTimes 16 00 16 30 17 00 17 30 18 00 18 30 我想将数组从 24 小时转换为 12 小时 这是我到目前为止所拥有的 它转换数组中的第一个数字 我遗漏了一些东西 但我无法解
  • 在 Xcode 6 - Swift 中使用自定义字体 [重复]

    这个问题在这里已经有答案了 我是斯威夫特新手 我想知道如何在 Xcode 6 的 swift 应用程序中使用自定义字体 您只需将字体文件 ttf 拖到 Xcode 左侧窗格的资源区域中即可 当您将其放入时 会出现一个对话框 确保您的应用程序
  • 在 iOS 上使用 MDCBottomNavigationBar 切换视图控制器

    我正在尝试创建一个使用 Material Design 库的底部导航功能的 iOS 应用程序 我可以获得带有底部导航栏的视图控制器来编译和显示 但我无法添加其他视图控制器并在单击不同选项卡时在它们之间切换 我将所有内容简化为两个文件 一个是
  • Gmail API:如何在 swift 上将附件发送到草稿

    最近 我的项目添加了使用Gmail 所以我遇到了很多关于它的问题 这让我很伤心 现在 我想知道如何将图像发送到草稿 我的代码如下 func postEmailMessageRequest model MEMailMessageModel r
  • 如何找到安全区域的高度和宽度?

    我正在尝试以编程方式为某些标签 按钮和文本字段设置相对于安全区域的高度和宽度的约束 例如 我希望将标签到安全区域顶部的距离设置为安全区域高度的 10 如何检索安全区域的高度和宽度 这是一个合理的方法吗 我的想法是 无论 iOS 设备如何 我
  • 如何以编程方式添加 NSMenu?

    我没有使用storyboard和xib 只使用了代码 我想以编程方式添加 编辑 菜单 我的问题是 1 如何显示 编辑 菜单 评论问题1 需要输入什么代码 2 Swift 提供了复制和粘贴等操作吗 class TestManager NSOb
  • 立即调用 Swift UIView animateWithDuration 完成闭包

    我期望在指定的持续时间后调用此 UIView 动画的完成闭包 但它似乎立即触发 UIView animateWithDuration Double 0 2 animations self frame CGRectMake 0 self bo
  • 错误:“字符串”无法转换为“字符串!”

    mapView rac valuesForKeyPath userTrackingMode observer self subscribeNextAs block handling 我收到一个错误 String is not convert
  • 适用于 iOS 的 Firebase 云消息通知未显示打开和分析

    我正在使用 FCM 向 iOS 应用程序发送通知 设备上可以很好地接收通知 但我无法在通知控制台 GUI 中获取 打开 或 转化 率 对于发送的近 200 0000 条通知 它始终显示 0 个打开 和 0 个转化 我仔细检查了所有的实现 但
  • 在 macOS 中获取用户首选的温度设置

    我正在尝试读取温度单位 摄氏度 华氏度 的用户设置系统首选项 我试图使用 NSLocale 获取此数据 但我找不到任何温度设置的证据 甚至可以读取这些数据吗 Thanks 官方 API 记录在首选项 实用程序 https developer
  • 导航栏的横向视图问题

    默认导航栏高度为 64 但更改后 其横向导航栏高度的方向更改为 28 我想设置修复所有方向的导航栏大小 您可以添加方向观察者 NotificationCenter default addObserver self selector sele
  • 检查 NSIndexPath 的行和部分的开关

    我想设置一个 switch 语句来检查值 ifNSIndexPath NSIndexPath是一个类 它由 除其他外 部分和行组成 indexPath row indexPath section 这就是我如何制定 if 语句来同时检查行和部
  • SwiftUI - 使用“ObservableObject”和@EnvironmentObject 有条件地显示视图

    我想在我的应用程序中有条件地显示不同的视图 如果某个布尔值为 true 则将显示一个视图 如果为 false 将显示不同的视图 该布尔值位于 ObservableObject 类中 并根据将要显示的视图之一进行更改 PracticeStat
  • 检查indexPath处的单元格在屏幕UICollectionView上是否可见

    我有一个CollectionView向用户显示图像 我在后台下载这些 下载完成后 我调用以下函数来更新collectionViewCell并显示图像 func handlePhotoDownloadCompletion notificati

随机推荐

  • 基于C#列表而不是过滤表过滤sql

    假设我有一个包含以下数据的表 现在我想按主键部门和号码进行过滤 我有一个必须在代码中过滤的部门和号码组合的列表 在我看来 我会创建一个连接 结果如下 select from employee e inner join dynamicTabl
  • 是否有 HTML5 方法来显示已加载到内存中的 tiff 图像数据

    我有一个 tiff 图像存储在内存中 在 JavaScript 变量中 在浏览器窗口中显示该图像的 javascript 或 html 技术是什么 是否有 drawimage 类型的函数 本机浏览器对 tiff 文件的支持仍然很差 维基百科
  • 长时间运行的云运行进程和 pubsub 消息重试

    我有一个云运行服务 它将运行长达 60 分钟 pubsub 是执行云运行服务的触发点 重试策略的 pubsub 配置设置为最大值 600 秒 现在 当从 pubsub 发布消息时 cloud run 开始执行 因为完整执行大约需要 60 分
  • ASP.NET Core Web应用程序-如何上传大文件

    Problem 我正在尝试创建一个 ASP NET Core 3 1 Web 应用程序 该应用程序接受文件上传 然后将其分成块以通过 MS Graph API 发送到 Sharepoint 这里还有一些其他帖子解决了类似的问题 但它们假设我
  • PHP 的 APC 与 Ruby 类似吗?

    PHP 有不同的操作码缓存 如 APC Zend Optimizer 来缓存代码并显着加快速度 Ruby 有类似的东西吗 默认的 Ruby 1 9 x 基于字节码 VM 此外您还有基于 Java 虚拟机的 Ruby 实现 JRuby 和 L
  • 如何使用 JavaScript/jQuery 访问 iframe 的内容?

    我想使用 jQuery 操作 iframe 内的 HTML 我想我可以通过将 jQuery 函数的上下文设置为 iframe 的文档来做到这一点 如下所示 function document ready some selector fram
  • 使用 JQgrid 和 sortableRows。更新表行顺序

    Using 使用 SortableRows 并了解行何时被移动修改行顺序后 我已经能够调用警报 我如何将此数据发送到 PHP 调用 editurl 传递此数据 类似于添加或编辑行时 editurl 接收 POST oper 变量 目前有 j
  • 从堆执行指令

    我可以在堆上分配一个块 将其字节设置为与函数调用及其参数相对应的值 然后使用函数调用和取消引用运算符来执行该序列吗 因此 如果我没理解错的话 您想在堆上动态创建 CPU 汇编指令并执行它们 有点像自修改代码 理论上这是可能的 但实际上可能不
  • 使用 Python 修复 Selenium Form 的等待时间

    我是 Python 新手 正在尝试自动填写表单 我已经完成了所有工作 但是当尝试 提交 时 它没有读取 XPATH 因此没有单击 HTML
  • 如何获取操作的默认应用程序

    如何确定哪个应用程序是特定操作的默认应用程序 例如我想知道哪个应用程序用于拨打电话或接收短信 有什么方法可以以编程方式找出哪个应用程序设置为默认应用程序 PackageManager resolveActivity做一些符合您正在寻找的事情
  • 自定义声音远程推送通知 iOS 不起作用

    我正在尝试更改远程消息的声音 我已将文件添加到我的项目中 见图1 我还将所有内容添加到我的 AppDelegate 中 在 didFinishLaunchingWithOptions 中我添加了 if UIDevice currentDev
  • 即使添加 -fPIC 编译标志后,“使用 -fPIC 重新编译”错误仍然存​​在

    我已经下载了一些我想从源代码编译的 C 运行后cmake src进而make从命令行 在构建目录中 我收到以下错误 usr bin ld usr local lib libBulletCollision a btDbvtBroadphase
  • 寄存器的十六进制值? x86

    MOV DL AL MOV DL B2 但是 AL 的十六进制字节值是多少 这些在哪里列出 我刚刚意识到这一定是另一个操作码 有人能指出我正确的方向吗 来自英特尔架构软件开发人员手册 第 2 卷 指令集参考手册 表3 1 与 rb rw 和
  • 即使身份验证成功,PassportJS Facebook 登录 isAuthenticated 返回 false

    由于某种原因 在我的 NodeJS Express 应用程序上 当通过 PassportJS 库与 Facebook 进行身份验证时 无论身份验证是否成功并返回配置文件数据 都会调用request isAuthenticated 总是回来f
  • 如何自动检测串行COM端口的连接C#

    我有与设备通信的应用程序 设备通过串行 COM 端口连接 我的应用程序可以与设备通信 我需要一些方法 事件 可以通过运行应用程序扫描COM端口 当我将设备连接到 PC 时 方法 事件将打印带有消息 已连接 或类似内容的 MessageBox
  • 当焦点从 EditText 更改为 Button 时 ActionBarSherlock 操作栏消失

    我有一个简单的登录布局 其中包含两个 EditText 字段和一个用于登录的按钮 问题是 当软键盘打开并且我将焦点从 EditText 更改为按钮时 ActionBar 消失 当我按返回时 ActionBar 再次返回 当软键盘关闭并且我使
  • Sass mixin 添加到选择器前面

    是否可以制作一个 SASS mixin 将其输出添加到选择器之前 我用现代化检查浏览器的 svg 功能 它输出svg类到支持 svg 时的元素 我想要background image根据 svg 功能进行更改 基本上 这就是我所需要的 co
  • 在 jQuery 的 Deferred 对象中抛出错误

    我有一个 ajax承诺并想要检查我的 语法上有效的 响应是否包含错误 在这种情况下触发拒绝状态 我使用了自己的承诺库 它可以轻松处理此类任务 我不太喜欢 jQueryPromise cache 实施及其Deferred object可能忽略
  • Discord.py:使用变量作为 Discord 嵌入颜色

    所以我试图为我的不和谐机器人 一个嵌入构建器 发出一个命令 我希望命令的用户能够输入嵌入颜色的十六进制值 这是我尝试过的 value message content embed discord Embed title Hey descrip
  • 为什么 didSet 中没有无限循环?

    在我的 FirstViewController 中 我有一个指向 SecondViewController 的按钮 将数据传递到 SecondViewController 中的属性 该属性有一个属性观察者 在设置时创建 SecondView