对于新的iOS / OSX版本,Objective C是否必要?

时间:2014-08-11 06:07:25

标签: ios objective-c macos swift

我总是被Objective C语法所惊吓,其*-()[[]]等等。现在我正在关注Swift,并从我的JavaScript背景作为前端开发人员,我非常喜欢它的优雅和清晰的结构。所以,我想知道,我是否真的需要学习Objective C(至少是基础知识)和Swift来为今年秋季推出的新iOS / OSX版本构建应用程序?

我能赢得的任何东西只能用Swift吗? Swift是否具有与Objective C一样多的API和OS功能?所以,如果我不需要支持当前的Objective C代码库,我是否仍然需要在实际工作中使用它,或者我可以使用Swift做同样的事情吗?

4 个答案:

答案 0 :(得分:3)

当然,这很大程度上取决于你打算做什么。但我认为你应该考虑一些问题:

效果

根据this SO question,表现并不像苹果承诺的那样好。但是如果你关心高性能,你应该想知道Objective-C是否是您的选择。

C ++代码

非常重要的是,如果没有Objective-C(++)包装器,就不能在Swift代码中使用C ++代码:

  

您无法直接将C ++代码导入Swift。相反,创建一个   用于C ++代码的Objective-C或C包装器。

来自Apple Swift Documentation

平台

Swift使用与现有Objective-C系统相同的运行时和自动引用计数的思想。因此,在我看来,Objective-C的基本知识和背后的思想有助于编写更好,更高性能的Swift代码。

现有工作

所有框架,方法,类等都需要一些时间才能拥有纯粹的Swift接口。几乎Apple的每个演示项目都是用Objective-C编写的。

结论

所以我认为,将来你需要一些基本的Objective-C知识 - 也许这会随着时间的推移而发生变化。但这在很大程度上取决于你打算做什么。

答案 1 :(得分:3)

学习ObjC或Swift并不困难。解决你的恐惧:它只表示要学习的新东西!

Swift也非常非常不像Javascript。不要被它的表面外观所迷惑(事实上,一般来说,避免专注于表面外观是一个非常好的计划)。

要回答这个问题:我希望再过几年你才能从知道ObjC中获得重大利益;在ObjC中有很多现有的代码,示例,文档等等。但是,一旦Swift 1.0真正用完,系统API中几乎没有什么需要它。

答案 2 :(得分:2)

  

有没有什么我只能用Swift做什么?

是的 - 如果您需要支持使用 C C ++ 代码的跨平台或遗留代码库,那么还没有办法(不是在可预见的未来)用Swift完成。

答案 3 :(得分:0)

我认为,最好先阅读一下Objective-C,至少是基本的东西,以便能够阅读它,因为如果你要成为一名iOS / Mac开发者,那么很有可能在某些时候,您必须以某种方式与Objective-C代码交互(例如,您可能需要查看一些第三方库代码)。学习基础知识并不需要花费太多时间,Objective-C实际上是一种相当简单的语言。它不是很漂亮:)。

Objective-C的另一个可能的必要条件是代码优化。高性能的代码部分通常用纯C / C ++编写。你不能将C / C ++代码与Swift混合使用。唯一可行的方法是使用Objective-C / Objective-C ++包装器来实现C / C ++代码。当你需要Objective-C知识的时候。

但实际上,如果我没有弄错的话,只使用Swift进行开发是可能的。所以,我的建议如下:如果你真的讨厌Objective-C,使用Swift作为主要开发语言,但是要学习Objective-C基础以便能够阅读(至少)。以防万一。