【问题标题】:What does "invalid mode 'kCFRunLoopCommonModes' ..."mean?“无效模式 'kCFRunLoopCommonModes' ...”是什么意思?
【发布时间】:2019-11-20 16:21:10
【问题描述】:

环境:版本 11.0 beta 3 (11M362v)

这是全文:

invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. 
This message will only appear once per execution.
Hello World

此消息仅在我单击连接到操作的 UISwitch 按钮时出现;在这里,打印“Hello World”。

显然,该操作的行为不受影响。

作为比较,我在工具栏中创建了一个正常运行的 UIBarButtonItem。所以切换按钮有点可疑。

问题:为什么会出现这种情况,这是什么意思?补救措施?

【问题讨论】:

  • 我在真实设备上的开关有同样的问题。 即使没有添加任何操作 - 第一次按下开关时就会发生错误。 Xcode 11.0 iOS 13.1.2 - iPhone Xs
  • 有人想出这个吗?
  • 关于这个问题的任何更新?
  • 在使用 Objective-C 编写的 iOS 应用程序中使用 UISwitch 时,我也看到此消息正在打印。 UISwitch 位于故事板中定义的视图上。 UIViewController 通过调用 presentViewController 来显示:动画:完成:
  • 我得到同样的东西,而且动画也因为某种原因延迟了

标签: uiswitch xcode11


【解决方案1】:

从 Apple Developer Relations 对this post 的回复来看,这是 UIKit 中的一个错误,Apple 正在跟踪该错误。在修复错误之前,建议将其视为“日志噪音”。

【讨论】:

    【解决方案2】:

    我认为这是苹果应该自行修复的警告。即使在来自 WWDC19 的 this 示例项目中,也存在此问题。表格的单元格中有一个 UISwitch。当我点击它时,会发出上述警告。

    所以,在我看来,这是苹果应该处理的错误。

    【讨论】:

    • 我今天仍然收到同样的警告。 Apple 打算什么时候解决这个问题?
    【解决方案3】:

    我遇到了类似的问题: 当我收到 UISwitch 的回调时,我重新加载了 UITableView。 我认为回调是在 UISwitch 完成更改其上下文之前启动的,并且在该状态下重新加载单元会产生一些冲突。

    有了这个理论,我这样解决了我的问题: 我将单元格分成多个部分,其中带有 UISwitch 的单元格位于其自己的部分中。 当我收到 UISwitch 的回调时,我重新加载了所有部分,除了单元格带有 UISwitch 的部分。

    【讨论】:

    • 你能更详细地展示一个例子吗,我有同样的问题,但不明白你的答案。就我而言,我没有 UITableView,有些人正在使用 SwiftUI 或 Interface Builder。如果您能找到通用答案,请感谢您的帮助。
    • 我使用这种方法 - 开关将不同的部分重新加载到其所在的部分,但我仍然遇到相同的错误。
    • 我还尝试将 UISwitch 分成 UITableView(静态单元格)中自己的单独部分,但仍然存在问题。对我来说,它发生在 UIKit 应用程序中调用 tableView.beginUpdates() 和 tableView.endUpdates() 时。谷歌搜索显示人们在使用 Apple 的 SwiftUI 代码时遇到了这个问题,并且它出现在了一些 Ray Wenderlich 论坛上。我还在 Apple 的一些 EveryoneCanCode 示例中看到了这个问题。也许是 UISwitch 的错误?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-09
    • 2014-10-31
    相关资源
    最近更新 更多