Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
斯威夫特能做到Objective-C所能做到的一切吗?_Objective C_Swift - Fatal编程技术网

斯威夫特能做到Objective-C所能做到的一切吗?

斯威夫特能做到Objective-C所能做到的一切吗?,objective-c,swift,Objective C,Swift,我是IOS开发新手,希望使用Swift语言而不是Objective-C 我对Cocoa touch的概念知之甚少,我想知道:Swift能做Objective-C能做的一切吗 这是一个有趣的问题,但本质上答案必须是否定的,因为您可以使用桥接头在swift中使用Objective-C资源。Xcode自动将Swift转换为Objective-C,反之亦然。但是,如果您不能编写Objective-C代码,则不能在swift项目中包含您自己的自定义Objective-C类 这完全取决于您喜欢如何编写代码。

我是
IOS
开发新手,希望使用
Swift
语言而不是
Objective-C


我对Cocoa touch的概念知之甚少,我想知道:
Swift
能做
Objective-C
能做的一切吗

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

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


值得注意的是,Cocoa和Cocoa Touch课程都是objective-c课程,因此掌握objective-c的实用知识可能会很有用。我认为迄今为止我听到的最好的建议是,如果你有时间,将两者都学习

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

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

  • 捕获Objective-C异常
  • 使用C++ API(通过Objul-C++)
  • 使用
    NSInvocation
    性能选择器:
    和其他动态调用方法,在运行时选择要调用的方法
  • 使用
    forwardInvocation:
  • 提供一个函数,以便在接受函数指针的C API中使用

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