我应该使用 Swift 还是 Objective-C 来学习 iOS 应用程序开发?
已发表: 2017-02-04决定在项目中使用 Objective-C 还是 Swift 并不总是那么容易,因为每次开始一个新项目时都需要考虑很多因素。 讨论这个话题,因为它是大多数 iOS 应用程序开发学习者问的最常见的问题。
选择正确和最合适的语言取决于项目和团队的背景和偏好,以及对一种编程语言的忠诚度。 我们不是在摇摆 Objective-C 或 Swift 的旗帜,而是考虑一个项目的所有方面,这些方面指向一种语言而不是另一种语言,比如项目范围、规模、团队组成和技术考虑。
2014 年,Apple 发布了全新的编程语言 Swift,让整个社区都大吃一惊。 在过去的 2 年里,Swift 核心团队快速重复,发布了众多版本的语言,令社区欣喜若狂。
对于现有的开发人员来说,Swift 具有有趣的含义,它也为想要学习 iOS 开发的新手引入了一些复杂性。 对于已经了解 Mac 或 iOS 开发并希望学习并帮助塑造一门新语言的所有开发人员来说,这是一个不错的选择。
但是,有许多开发人员只是想尝试一下,不想获得 iOS 开发人员的工作,也不介意在学习时处理额外的错误,因为他们可能也有兴趣学习它。
为什么要学习 Swift?
为了弄清楚编程的基础,Swift 是一种更容易使用的语言,而 Objective-C 已经有 30 多年的历史了,并且是在我们必须对我们如何与计算机交互进行不同考虑的时候编写的。
所有这些因素对于今天了解和理解都非常重要,因为这些因素会使学习编程的基础知识变得令人生畏。 此外,Swift 比 Objective-C 更容易理解编程的基础知识。 让我们来看看你应该学习 Swift 的不同原因?
安全的
在推出 Swift 时,Apple 声称它安全、现代且功能强大,而现代主义和编程语言的强大功能对绝对的初学者来说意义不大,而安全性才是最重要的。
最困难的事情是在学习如何编程时不知道出了什么问题。 好吧,从自己身上弄清楚并从中学习有很多好处; 然而,缺乏适当的反馈可能会推迟一些。
使用 Swift,您可以防止出现一整类错误或错误,并反复告知我们做错了什么。 除此之外,Swift 更安全,它会让你的代码编写体验不那么令人沮丧。
高度互动的环境
除了 Swift,Apple 还发布了两个最具交互性的编码环境,帮助初学者学习如何编码。 Xcode Playgrounds 是一个帮助所有初学者学习如何编码的环境。
Xcode Playgrounds 是 Mac 应用程序 Xcode 的环境和一部分,可让您学习和探索 Swift、应用程序的原型部分以及为其他人开发学习环境。
您还可以找到一个名为 Swift Playgrounds 的 iPad 应用程序,它提供与 Xcode Playgrounds 相同的交互环境,但以更具调查性的方式,允许您使用 iPad 的硬件。
Swift 最棒的地方在于,它比其他任何东西都更具吸引力,它提供即时反馈,使整个概念易于学习。 这种环境对 Swift 来说并不酷,但是苹果用 iPad 应用做了一些很棒的事情,让所有初学者的学习变得容易。
现代的
Swift 是一种高度现代的语言,具有丰富的方面,让初学者比 Objective-C 更容易读写。 在网络上,你可以看到它是写出来的,这并不重要,因为一旦你有足够的经验,一切都会变得更容易理解。
在不被阅读代码绊倒的情况下,很难弄清楚这些概念。 您不会因为在行尾忘记分号而导致程序崩溃。
一旦你习惯了,这些都是小事; 但是,它们肯定对 Swift 为初学者带来的好处。 Swift 是一个高度现代化的工具,它将降低许多人的门槛,让专注于概念变得非常简单。
简而言之,学习和理解编程基础知识是您学习 iPhone 开发之旅的第一步。 语言提供的现代性和安全性都有助于降低进入门槛。
为什么要学习 Objective-C?
渐渐地,答案会随着岁月的流逝而改变,Swift 在社区中取得了更多进展; 然而,关于 Objective-C 只需要了解一件事,因为它已经成为 iOS 开发的事实上的语言大约 10 年了。 而且,如果你想成为一名 MacOS 开发者,从 80 年代开始,Objective-C 一直是首选。
简而言之,iOS SDK 中的所有内容都是用 Objective-C 开发的,并且与 Objective-C 编程模型完美配合。 虽然你是用 Swift 编写代码,但你将与所有用 Objective-C 编写的组件进行交互。 第三方库和框架主要在 Objective-C 中,因为 Objective-C 的存在时间要长得多。
此外,绝大多数学习资源,如博客文章、书籍、会议视频等,都在 Objective-C 中; 因此,如果您因某些神秘问题而上网寻求帮助,则很有可能阅读 Objective-C 代码。 Swift 社区很热心,Swift 中有很多资源,所以不要觉得你会很难获得帮助。

如果您决定成为一名认真的 iOS 开发人员,那么阅读和编写 Objective-C 代码也很重要。 这背后的主要原因是,如果你找到一份 iOS 开发人员的工作或收到一个较旧的项目,所有代码都将使用 Objective-C 编写。
然而,我们用于 iOS 开发的工具并没有针对 Swift 进行优化,而且它已经实现了,但是这些工具在 Objective-C 中要好得多。 对于大多数公司来说,Objective-C 仍然是首选的开发语言。
有必要学习两种语言吗?
苹果,一家领先的公司,发布一种全新的语言并不是为了好玩。 该公司已通过核心团队发布了这种新语言,并努力促进社区采用并提供明确的指示。
该公司将这种高端语言视为其平台的未来。 Swift 语言的主要目标是超越 iOS 开发并与正在进行的服务器端 Swift 一起工作。
如果您决定长期加入这个社区,Swift 将成为您的主要开发语言。 不管 Swift 采用何种方式,Objective-C 仍然没有任何进展。 该公司仍在尝试对语言进行许多改进。
可以完全用 Swift 编写应用程序; 但是,您很有可能需要偶尔使用 Objective-C。 作为初学者,请务必注意这一点,这是 iOS 开发中相当困难的部分。 一旦你熟悉了一种编程语言,学习另一种编程语言就不难了。
在 Objective-C 和 Swift 之间进行选择时,请注意技术方面的考虑
Objective-C 和 Swift 这两种语言都获得了不同的技术优势。 在下面,您可以找到应该考虑的因素。
语言运行时
你知道 Objective-C 运行时比 Swift 运行时更健壮吗? Swift 的运行时甚至接近于 Objective-C 的运行时,甚至几年都无法实现。 如果您决定编写将受益于对象和类型的反射和深入自省的代码,那么 Objective-C 是不费吹灰之力的。
代码稳定性
Swift 是比 Objective-C 更安全的编程语言,因为它具有强大的类型系统和错误处理能力。 如果您使用惯用的 Swift,则可以保证您的代码能够解决所有潜在的错误情况。
这并不意味着它抓住了一切。 保留循环中的内存逃逸是错误的一个示例,它在 Swift 代码中与 Objective-C 一样普遍。 这是因为 Swift 的非自愿引用计数系统不为所动。
工具支持
整个 Xcode 团队完成了一项令人难以置信的工作,升级了构建过程以支持 Swift。 该团队不得不处理应用一种复杂的语言并支持它使用一种非常不同的语言。 IDE 本身滞后并且对 Swift 的工具支持最少,这有点令人惊讶。
有时,您可以幸运地获得语法突出显示。 很多时候,你会没有自动完成。 如果您喜欢现代 IDE 提供的强大支持,那么您一定要考虑坚持使用 Objective-C 或评估替代 IDE。 最常见的替代方案是 AppCode; 但是,有人对 emacs 进行了正确的设置。
使用 Foundation API
您计划制作的应用程序将使用主要的基础 API,您应该使用 Objective-C。 的确,Swift 提供了一些出色的包装器,并使内存管理更加顺畅; 但是,这些仍然是 C API 和基于 C 的函数调用,它们更自然地适合 Objective-C 代码库。
使用 C++ 代码
与基础 API 类似,您可以使用 C++ 库或在跨平台 C++ SDK 之上进行开发,因为它适合于 Objective-C 项目。 您将无法将 C++ 导入 Swift 文件。
要使用 Swift,您需要完成制作 Objective C 和 C++ 包装类的繁琐且充满错误的任务。 每一次,您都需要链接和额外的开销,并且想要使用 C++ 库的另一部分。 如果你打算使用 C++,Objective-C 是一个正确的选择。
面向未来
你知道最具前瞻性的项目是用 Swift 编写的吗? Swift 的使用范围已扩展到用于第三个开源 Cocoa 项目。 在接下来的四年里,它将等同于 Objective-C。 此外,大多数新的教程和博客已经用 Swift 编写。
我们坚信,在 5 到 10 年内,应该有足够的关于 Swift 的信息来反驳理解 Objective-C 的要求。 在 Objective-C 消失之前,您将有足够的时间来转换您的代码; 因此,您可以考虑一下。
结束语
因此,这些是开发人员在为 iOS 应用程序开发选择 Objective-C 和 Swift 时需要考虑的最常见因素。 您的项目有可能包含其他考虑因素,而这些因素通常不会为大量应用程序所面临。 但是,如果您正在寻找一位经验丰富、精通 Objective-C 和 Swift 的 iOS 开发人员,您可以联系 iPhone 应用程序开发公司。