【问题标题】: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 知识——也许这会随着时间的推移而改变。但这在很大程度上取决于您打算做什么。
【解决方案3】:
有什么我不能只用 Swift 做的吗?
是的 - 如果您需要使用 C 或 C++ 代码支持跨平台或遗留代码库,那么目前还没有办法(在可预见的未来),这可能用 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 的基础知识以便能够阅读它(至少)。以防万一。