为什么Apple决定将Objective-C用于iPhone SDK而不是C ++?
我觉得他们不会选择比Objective-C更受欢迎的语言。是因为想要在他们的应用程序中拥有一些独特的东西吗?
答案 0 :(得分:51)
基本上,这一切都来自NeXT。
答案 1 :(得分:20)
目标C始于1983年,我相信是由Brad Cox和Tom Love创作的。 Objective-C的想法是采用C的纯度和低级控制,并将其与真正的面向对象的功能合并,这将允许公司定制可以与Obj-C的OOP层通信的系统库。基本上,它起作用了。 Obj-C是C的严格超集,不像C ++,它是C的大部分,但有很多不同。
当史蒂夫乔布斯创立NeXT Computer(1985)时,他带来了一些前苹果团队和其他人。他最好的程序员有兴趣使用扩展C语言,具有相同的速度优势和系统控制。他们选择了Objective-C。 NeXT最终为基本语言编写了许多库和方法。这些都以NS为下一步开始。这是NeXT OS的名称。到1989年,Next Step OS被认为远远优于MS Windows或Mac OS,许多计算机公司都希望严重许可。乔布斯根本不想走向那个方向。
一旦苹果公司出现并将史蒂夫·乔布斯带回公司(1996年),将新一代操作系统注入新的Mac OS X确实是苹果恢复其软件及其编程策略的关键。
虽然C ++仍然是一种真正优秀且功能强大的语言,但我发现Objective C的缺陷较少(仅限我的意见),Apple继续研究Cocoa库使得Obj-C语言成为具有C基础的真正现代力量。它比Java更好吗?不确定。但是对于它主要为(Mac OS,iOS)设计的内容,如果有点过于冗长,那就非常好了。
对Obj-C的最大批评是语法风格,但任何真正学习该语言的程序员都会很快了解到它的惊人力量,并且几乎无法适应Mac,iPhone,iPad。
其他任何平台最终都会采用Obj-C吗?不确定,但怀疑。但是Cocoa库真的很精彩。
答案 2 :(得分:4)
这是因为在Mac OS X开发之前,Objective C已成为Mac OS X开发的事实上的语言。当Jobs离开Apple设置NeXT时,Objective C语言被开发为一种非C ++的特定语言。避免了许多陷阱。因此,任何便携式或消费类设备(包括Apple TV)都使用Objective C作为主要开发语言,并在性能或接口问题需要时下载到底层C层,这是有道理的。
答案 3 :(得分:2)
Objective-C将面向对象的编程添加到C.它用于NeXT,在其上导出了很多OSX。它支持所有C,并且比C ++简单。
答案 4 :(得分:1)
请注意,Objective-C不是一种新语言。它自1986年以来一直存在 - 远在Java或C#之前!
自NeXT以来,它一直被广泛使用,许多真实世界的应用程序都在使用它。
答案 5 :(得分:0)
Apple 在 2010 年回答了这个问题here:
<块引用>选择 Objective-C 语言的原因有很多。第一的 最重要的是,它是一种面向对象的语言。那种 打包在 Cocoa 框架中的功能只能是 通过面向对象的技术交付。第二,因为 Objective-C 是标准 ANSI C、现有 C 程序的扩展 可以适应使用软件框架而不会丢失任何 进入他们最初发展的工作。因为 Objective-C 结合了 C,你在工作时获得 C 的所有好处 在 Objective-C 中。你可以选择什么时候做某事 面向对象的方式(例如,定义一个新类)以及何时 坚持过程编程技术(定义一个结构和 一些函数而不是一个类)。
此外,Objective-C 是一种基本上简单的语言。它的语法 体积小,明确且易于学习。面向对象编程, 以其自觉的术语和对抽象设计的强调, 经常给新员工带来陡峭的学习曲线。一种 像 Objective-C 这样组织良好的语言可以使 熟练的面向对象程序员,难度要低得多。
与其他基于 C 的面向对象语言相比,Objective-C 是 非常有活力。编译器保留了大量关于 对象本身在运行时使用。否则的决定 可能在编译时进行,可以推迟到程序完成 跑步。动态性赋予了 Objective-C 程序不寻常的灵活性和 力量。例如,它产生了两大难以获得的好处 与其他名义上面向对象的语言:
Objective-C 支持开放式的动态绑定风格, 可以为交互式用户界面提供简单的架构。 消息不一定受以下任一类的约束 接收者甚至方法名称,因此软件框架可以允许 供用户在运行时选择并允许开发人员自由选择 在他们的设计中表达。 (动态绑定等术语, 消息、类和接收器在此适时解释 文档。)动态性能够构建复杂的 开发工具。运行时系统的接口提供访问 有关运行应用程序的信息,因此可以开发 监控、干预和揭示底层结构和 Objective-C 应用程序的活动。
历史注释:作为一种语言,Objective-C 有着悠久的历史。它是 由 Brad Cox 于 1980 年代初在 Stepstone 公司创建, 汤姆爱。它在 1980 年代后期由 NeXT Computer Inc. 授权给 开发先于 Cocoa 的 NeXTStep 框架。 NeXT 扩展了 以多种方式使用语言,例如添加协议。