【问题标题】:Can Swift do everything that Objective-C can do?Swift 能做 Objective-C 能做的所有事情吗?
【发布时间】:2014-11-30 12:30:32
【问题描述】:

我是 IOS 开发的新手,我想使用 Swift 语言而不是 Objective-C。

我对@9​​87654324@ 的概念知之甚少,我想知道:Swift 可以做Objective-C 可以做的所有事情吗?

【问题讨论】:

  • 你的意思是说:“你能在 Swift 中做任何你在 Objective-C 中做不到的事情吗?”?
  • 实际上,我的意思是:有什么 Objective-C 可以做但 Swift (current) 做不到的吗?

标签: objective-c swift


【解决方案1】:

有很多事情可以在 Objective-C 中完成,但不能在 Swift 中完成,除非在 Objective-C 中实现它,然后在 Swift 中使用它。其中包括:

  • 捕获 Objective-C 异常
  • 使用 C++ API(通过 Objective-C++)
  • 使用NSInvocation、performSelector: 和其他方式在运行时选择调用方法时动态调用
  • 使用forwardInvocation:处理未实现的方法调用
  • 提供一个函数以在采用函数指针的 C API 中使用

【讨论】:

    【解决方案2】:

    我知道在 Objective-C 中但在 Swift 中没有的唯一概念是键值观察 (KVO)。您可以对 Swift 类使用 KVO 来观察 Objective-C 类的属性,但不能观察 Swift 类的任意属性。有关详细信息,请参阅this answer。

    【讨论】:

      【解决方案3】:

      这是一个有趣的问题,但基本上答案一定是否定的,因为您可以使用桥接头快速使用 Objective-C 资源。 Xcode 自动将 Swift 转换为 Objective-C,反之亦然。但是,如果你不能编写 Objective-C 代码,那么你就不能在你的 swift 项目中包含你自己的自定义 Objective-C 类!

      这完全取决于您喜欢如何编码。 Apple 曾表示,Objective-C 仍然是“一流”语言,这意味着他们将在可预见的未来同时运行 Swift 和 Objective-C。就我个人而言,我更喜欢 Objective-C,因为你可以很容易地使用 C(因为在 C 中任何合法的东西在 Objective-C 中也是合法的)添加到其中 Swift 是一种更加程序化的风格,而 Objective-C 非常明显是面向对象的。

      值得注意的是,Cocoa 和 Cocoa Touch 类都是 Objective-C 类,因此了解 Objective-C 的工作知识可能会很有用。我认为到目前为止我听到的最好的建议是,如果你有时间,两个都学!

      【讨论】:

        猜你喜欢
        • 2014-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-02
        • 1970-01-01
        • 2011-02-02
        • 2011-02-27
        • 1970-01-01
        相关资源
        最近更新 更多