【问题标题】:Will Objective C be necessary for new iOS/OSX releases? [closed]新的 iOS/OSX 版本是否需要 Objective C? [关闭]
【发布时间】:2014-08-11 06:07:24
【问题描述】:

我总是对 Objective C 语法及其所有 *-()[[]] 等感到害怕。现在我正在研究 Swift,从我作为前端开发人员的 JavaScript 背景来看,我真的很喜欢它的优雅和清晰的结构。所以,我想知道,我真的需要同时学习 Objective C(至少是基础知识)和 Swift 来为今年秋季推出的新 iOS/OSX 版本构建应用程序吗?

有什么我不能只用 Swift 做的吗? Swift 对 API 和 OS 功能的访问权限是否与 Objective C 一样多?那么,如果我不需要支持当前的 Objective C 代码库,我在实际工作中是否仍然需要它,或者我可以用 Swift 做所有相同的事情吗?

【问题讨论】:

    标签: ios objective-c macos swift


    【解决方案1】:

    学习 ObjC 或 Swift 都不是难事。克服你的恐惧:它只表明要学习新事物!

    Swift 也非常非常 不像 Javascript。不要被它的表面所迷惑(其实,一般来说避免关注表面是一个不错的方案)。

    不过,要回答这个问题:我希望您还需要几年的时间才能从了解 ObjC 中获得显着的好处; ObjC 中有很多现有的代码、示例、文档等。但是一旦 Swift 1.0 真正推出,系统 API 中几乎没有需要它的东西。

    【讨论】:

      【解决方案2】:

      当然,这在很大程度上取决于您打算做什么。但我认为有几点你应该考虑:

      性能

      根据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 知识——也许这会随着时间的推移而改变。但这在很大程度上取决于您打算做什么。

      【讨论】:

      • 不是 C 代码。只是 C++ 代码。
      • 谢谢四位你说的对。
      【解决方案3】:

      有什么我不能只用 Swift 做的吗?

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

      【讨论】:

      • 这是非常有趣和重要的一点!
      【解决方案4】:

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

      Objective-C 的另一个可能需要是代码优化。代码的高性能部分通常用纯 C/C++ 编写。您不能将 C/C++ 代码与 Swift 混合使用。您可以做到这一点的唯一方法是为您的 C/C++ 代码使用 Objective-C/Objective-C++ 包装器。这就是你需要 Objective-C 知识的时候。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-19
        • 1970-01-01
        • 1970-01-01
        • 2018-07-15
        • 1970-01-01
        • 2010-09-07
        • 2014-12-21
        • 2018-10-22
        相关资源
        最近更新 更多