【问题标题】:iOS 10 and swift 3 conversion questionsiOS 10 和 swift 3 转换问题
【发布时间】:2016-12-29 13:02:13
【问题描述】:

这是我第一次真正遇到将我的代码更新到新版本的 iOS 和 Swift 3 等重大代码更改的情况。我想获得一些关于这些主题的良好实践和标准程序的信息。

首先,我是否应该等到 Xcode 8 完全发布后再尝试将我的代码转换为 Swift 3?似乎随着测试版的继续,代码转换功能变得更加智能和准确。另外,在 beta IDE 中进行编辑是否安全?

其次,我的应用程序在 iOS 9 上运行良好并且运行良好。但是,在 iOS 10 上,UI 元素正在起作用(改变位置,而不是更新)并在 iOS 9 中不明显的特定位置冻结。这是由于将在 iOS 10 中更新的函数名称发生变化吗?此外,这些错误中的一些是否会随着测试版的整理而“自行修复”?

感谢您的帮助!

【问题讨论】:

    标签: swift3 ios10 xcode8


    【解决方案1】:

    建议与所有 Xcode beta 版本大致相同:将 Xcode 的 beta 版本(尤其是 Swift 3)视为一个“沙盒”,您可以在其中玩游戏,但不要转换生产项目。或者,更准确地说,您可以随意转换它,以便您可以在沙盒中玩游戏,这样您就可以为 Swift 3 测试版结束时做好准备,但要知道当前的测试版 Swift 3 可能会发生进一步的变化。确保在 Xcode 8 结束测试之前保留现有的生产代码/项目)。永远不要计划在 Xcode 7.x 中打开 Swift 3 项目。保持 Swift 3 代码和原始 Swift 2.x 项目完全隔离。

    在 iOS 10 上您的 iOS 9 应用程序,我很惊讶您发现您的 iOS 9 应用程序(尤其是 iOS 10 beta 7)出现问题,因为大多数问题现在已经解决。如果某些东西不能正常工作,那就有点极端了,因为大多数编写良好的 iOS 9 代码都可以与 iOS 10 无缝协作。API 有所更改,但为 iOS 9 构建的应用程序通常在 iOS 10 设备上运行良好.很少有事情会导致您描述的那种视觉伪影/错误。您遇到了问题,您应该发布一个带有MCVE 的新问题来说明问题。

    【讨论】:

    • 感谢您的回答!这有助于为我清理一些事情。但是,另一个问题是,如何在不转换为 Swift 3 的情况下在 iOS 10 中测试我的应用程序(同时查看错误代码和堆栈跟踪)?
    • 您可以通过多种不同的方式在 iOS 10 设备上从 Xcode 7 安装应用程序,例如stackoverflow.com/a/35044362/1271826。但是,我假设你已经这样做了……你是如何断定这些 UI 控件在 iOS 10 上起作用的?
    • 我的 iPhone 上有 iOS 10 测试版,我通过 Xcode 中的设备安装了该应用程序
    • 全新安装应用程序后,UI 标签等工作正常。但是,该应用程序仍会在 iOS 9 版本没有的地方冻结。
    • 查看堆栈跟踪的唯一方法是让它崩溃并通过“设备”窗口查看崩溃日志。或者制作一个项目的副本并在 Xcode 8 中将其转换为 Swift 2.3(比 Swift 3 转换更省力),然后您可以通过调试器运行它。 (当你编译它时,你也可能会得到一些信息警告。)
    【解决方案2】:

    鉴于您的问题,我将指出我遇到的一些事情。我会以原始格式保留一份 Swift 2.2 代码的副本,这可能看起来很明显,但它对我有帮助,所以我把它放在那里。我遇到的一个具体问题是运行我转换后的代码的“线程 1:信号 SIGABRT”。我刚刚在情节提要中删除了我的对象连接,在本例中是一个 UIButton 对象,并在转换后重新构建它们并且错误消失了。我仍在努力转换代码,所以当我找到并修复它时,我会添加到我的帖子中。我建议您在进行转换时是否得到特定的东西,只问一个不同的问题并发布它。它使事情变得简单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-11
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多