【发布时间】:2017-10-26 11:02:42
【问题描述】:
我今天正在做一些编码,我用 Swift 为我的一个视图控制器创建了一个类。我忘记将我的类绑定到我的视图控制器,所以当我打开助手编辑器时,它给了我通用的视图控制器基类。
我注意到它似乎在 Obj-C 中。 (我从来没有研究过 Obj-C,之前我只是根据我之前看到的 Obj-C 中的一些其他代码进行猜测)
为什么 Apple 使用 Obj-C 而不是 Swift。我认为 Apple 的官方语言是 Swift,而且我认为 Apple 确实大力推动了 Obj-C 开发人员使用 Swift 而不是 Obj-C。
如果 Swift 应该是 Obj-C 的更好版本,并且使用 Swift 4,我们几乎可以在 Swift 中完成 Obj-C 可以做的所有事情,为什么 Apple 不直接转换为 Swift 并过时 Obj-C(I明白这需要时间和金钱来完成,而且不会在一夜之间发生)
在我看来,对于初学者来说,Swift 比 Obj-C 更容易学习(我知道,因为我在 2 个月内就学会了)而且 Swift 比 Obj-C 更简单,布局更好
我知道 Swift 是错误的,因为我每天都会遇到错误,但我敢打赌 Obj-C 在刚开始时会更糟(事后看来),所以几年后 Swift 将等于或大于 Obj-C保持其基本的简单性
如果我错了,请纠正我
【问题讨论】:
-
尽管 ObjC 已有 30 多年的历史,而 Swift 只有 4 年,但 Apple 目前支持 both ObjC 和 Swift 方法相同;
Foundation类和UIKit目前基于 ObjC。 -
UIViewController 可以追溯到 2007 年,在 Swift 之前。 Apple 没有魔杖可以将所有现有的 Objective-C 代码转换为 Swift。这需要时间。
-
我了解转换需要时间。我讨厌我的老师让我们将 C++ 程序转换为 Swift。 Apple 完全支持这种语言 Swift 似乎很奇怪,但他们仍然使用 Obj-C。我知道 Obj-C 是一种很酷的语言,但它似乎有点过时了。这就像在一个非常旧的蛋糕上撒糖霜
-
不可能。用 Swift 编写响应者链是根本不可能的。在 Swift 中编写一个通用的撤销管理器是根本不可能的。 ... 如果有人说,有可能,请给我代码。这两个概念都可以用 Objective-C 中的几行代码来编写。翻译成 Swift 并不过分,翻译成 Swift 也不会花费太多时间。不可能把它翻译成 Swift。
-
@holex - 不,Swift 中的 Foundation 本身就是事物。它不是来自 objc 的 Foundation。至于 UIKit - 你是对的。
标签: objective-c swift