代码之家  ›  专栏  ›  技术社区  ›  Michael SarpErdag

Swift 4.1abi前向兼容性:实现苹果未来将实现的功能

  •  2
  • Michael SarpErdag  · 技术社区  · 6 年前

    我不在乎明年是否需要重新编译我的应用程序,因为苹果再次改变了Swift语言。

    在我正在编写的一个应用程序中,我添加了一个函数,允许我添加两个 CGPoint 价值观。这样做是有道理的,例如当你使用 pan gesture recognizers . 代码是:

    func +(_ a: CGPoint, _ b: CGPoint) -> CGPoint {
        return CGPoint(x: a.x+b.x, y: a.y+b.y)
    }
    

    问题是:如果苹果决定在未来增加 + 功能 CGPoint公司

    系统:macOS 10.13.6,Xcode 9.4,Swift 4.1,部署目标iOS 9.0

    1 回复  |  直到 6 年前
        1
  •  4
  •   Ole Begemann    6 年前

    如果苹果决定将来也为CGPoint添加一个+功能,它会破坏我的应用程序吗?

    不,首先。系统框架的Swift覆盖当前随应用程序一起提供。如果在ABI稳定后,Evne在将来发生变化,则现有应用程序将不会受到影响,除非它们重新编译。

    其次,重载解析发生在编译时。一、 编译器选择要调用的具体函数,任何动态链接都不会改变它。


    如果你顺从 CGPoint BinaryInteger 其中包括 + CGPoint公司 二元打印机 可能没有道理,但请容忍我的论点。)

    在这种情况下,苹果在未来的版本中添加的冲突一致性可能会导致冲突。

    斯威夫特论坛上正在讨论斯威夫特应如何处理最后一个问题: Retroactive Conformances vs. Swift-in-the-OS .