Swift可以做Objective-C可以做的所有事情吗?

时间:2014-11-30 12:30:33

标签: objective-c swift

我是IOS开发者的新手,希望使用Swift语言代替Objective-C

我对Cocoa touch的概念知之甚少,我想知道:Swift可以执行Objective-C可以执行的所有操作吗?

3 个答案:

答案 0 :(得分:3)

在Objective-C中可以做很多事情,但是在Swift中无法完成,没有在Objective-C中实现它,然后在Swift中使用它。其中一些包括:

  • 捕获Objective-C例外
  • 使用C ++ API(通过Objective-C ++)
  • 在运行时选择要调用的方法时,使用NSInvocationperformSelector:和其他动态调用方法
  • 使用forwardInvocation:
  • 处理未实现的方法调用
  • 提供在带有函数指针的C API中使用的函数

答案 1 :(得分:2)

我所知道的唯一概念是Objective-C而不是Swift,它是Key-Value Observing(KVO)。您可以使用KVO作为Swift类来观察Objective-C类的属性,但是您无法观察Swift类的任何属性。有关详细信息,请参阅this answer

答案 2 :(得分:0)

这是一个有趣的问题,但基本上答案必须是NO,因为您可以使用bridging-headers在swift中使用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的工作知识可能很有用。我认为到目前为止我所听到的最好的建议是,如果你有时间,可以同时学习它们!