Objective-C:修订间差异
创建页面,内容为“{{Infobox|标题=Objective-C|内容={{!}}- ! 中文名 {{!}} 扩充C的面向对象编程语言 {{!}}- ! 英文名 {{!}} Objective-C {{!}}- ! 简称 {{!}} ObjC、OC {{!}}- ! 设计者 {{!}} 布莱德·考克斯(Brad Cox)、Tom Love {{!}}- ! 设计公司 {{!}} Stepstone(原 Productivity Products International) {{!}}- ! 面市时间 {{!}} 1980年代 {{!}}- ! 当前版本 {{!}} {{!}}- ! 主要实现产品 {{!}} Clang、GCC {{!}}-…” |
IdleTap-bot(留言 | 贡献) 由旧格式Infobox转换为新参数格式(label/data),修复空信息框(由IdleTap-bot执行) |
||
| (未显示另一用户的1个中间版本) | |||
| 第1行: | 第1行: | ||
{{Infobox| | {{Infobox | ||
| title = Objective-C | |||
| label1 = 中文名 | |||
| data1 = 扩充C的面向对象编程语言 | |||
| label2 = 英文名 | |||
| data2 = Objective-C | |||
| label3 = 简称 | |||
| data3 = ObjC、OC | |||
| label4 = 设计者 | |||
| data4 = 布莱德·考克斯(Brad Cox)、Tom Love | |||
| label5 = 设计公司 | |||
| data5 = Stepstone(原 Productivity Products International) | |||
| label6 = 面市时间 | |||
| data6 = 1980年代 | |||
| label7 = 当前版本 | |||
| data7 = | |||
| label8 = 主要实现产品 | |||
| data8 = Clang、GCC | |||
| label9 = 受其影响 | |||
| data9 = Smalltalk、C | |||
| label10 = 影响语言 | |||
| data10 = Swift、Java(部分特性) | |||
| label11 = 操作系统 | |||
| data11 = macOS、iOS、Linux(通过GNUstep)等 | |||
| label12 = 网站 | |||
| data12 = [https://developer.apple.com/ Apple Developer] | |||
}}'''Objective-C'''(常缩写为 '''ObjC''' 或 '''OC''')是一种通用、高级、面向对象的[[编程]]语言,它在标准 ANSI C 语言之上扩展了 Smalltalk 风格的消息传递机制<ref name="[[apple]]_intro">[https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ProgrammingWithObjectiveC/Introduction/Introduction.html Apple Inc. "Programming with Objective-C", Introduction]</ref>。该语言是[[苹果公司]] [[macOS]]、[[iOS]] 及其相关 API(Cocoa 与 Cocoa Touch)的主要开发语言,直至 2014 年 Swift 语言问世。Objective-C 由布莱德·考克斯(Brad Cox)和 Tom Love 于 1980 年代初发明<ref name="cox_book">Cox, Brad J. (1986). ''Object-Oriented Programming, An Evolutionary Approach''. Addison-Wesley. ISBN 978-020[[110]]3939.</ref>,后被 NeXT 公司选为其 NeXTSTEP [[操作系统]]的核心开发语言。目前 Objective-C 的商标权归苹果公司所有,苹果也是该语言的主要维护者<ref name="apple_license">[https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjectiveC/Introduction/introObjectiveC.html Apple Inc. "About Objective-C" (archived)]</ref>。 | |||
== 历史 == | == 历史 == | ||
Objective-C 的起源可追溯至 1980 年左右,当时布莱德·考克斯和 Tom Love 在 ITT 实验室工作,他们受到 Smalltalk 语言的启发,希望将动态消息传递机制引入 C 语言,以提升工程系统的可复用性<ref name=" | Objective-C 的起源可追溯至 1980 年左右,当时布莱德·考克斯和 Tom Love 在 ITT 实验室工作,他们受到 Smalltalk 语言的启发,希望将动态消息传递机制引入 C 语言,以提升工程系统的可复用性<ref name="[[wiki]]_history">[[wikipedia:Objective-C#History|Wikipedia: Objective-C – History]]</ref>。考克斯编写了一个 C 语言的预处理器,为 C 增加了面向对象特性,这便是 Objective‑C 的雏形<ref name="cox_preprocessor">Cox, Brad. "The Objective-C Language: An Introduction" (1983).</ref>。 | ||
1983 年,考克斯与 Love 共同创立了 Productivity Products International(PPI)公司,后更名为 Stepstone,将 Objective‑C 及其类库商业化<ref name="stepstone">[[wikipedia:Objective-C#Early_development|Wikipedia: Objective-C – Early development]]</ref>。1986 年,考克斯出版了《Object‑Oriented Programming, An Evolutionary Approach》一书,系统阐述了该语言的设计哲学<ref name="cox_book" />。 | 1983 年,考克斯与 Love 共同创立了 Productivity Products International(PPI)公司,后更名为 Stepstone,将 Objective‑C 及其类库商业化<ref name="stepstone">[[wikipedia:Objective-C#Early_development|Wikipedia: Objective-C – Early development]]</ref>。1986 年,考克斯出版了《Object‑Oriented Programming, An Evolutionary Approach》一书,系统阐述了该语言的设计哲学<ref name="cox_book" />。 | ||
1988 年,史蒂夫·乔布斯创办的 NeXT 公司从 Stepstone 获得 Objective‑C 授权,并扩展了 GCC 编译器以支持该语言。NeXT 基于 Objective‑C 开发了 AppKit 和 Foundation Kit,作为 NeXTSTEP 操作系统的基础开发框架<ref name="next">[[wikipedia:Objective-C#NeXT_and_Apple|Wikipedia: Objective-C – NeXT and Apple]]</ref>。尽管 NeXT 硬件并未取得商业成功,但其软件工具在业界影响深远。 | 1988 年,史蒂夫·乔布斯创办的 NeXT 公司从 Stepstone 获得 Objective‑C 授权,并扩展了 GCC 编译器以支持该语言。NeXT 基于 Objective‑C 开发了 AppKit 和 Foundation Kit,作为 NeXTSTEP 操作系统的基础开发框架<ref name="next">[[wikipedia:Objective-C#NeXT_and_Apple|Wikipedia: Objective-C – NeXT and Apple]]</ref>。尽管 NeXT 硬件并未取得商业成功,但其[[软件]]工具在业界影响深远。 | ||
1992 年 | 1992 年,[[GNU]] 项目增加了对 Objective‑C 的支持<ref name="gnu">[https://gcc.gnu.org/onlinedocs/gcc-3.4.6/gcc/Objective-C.html GCC online documentation – Objective-C]</ref>。1994 年 NeXT 与 Sun 联合发布了 OPENSTEP 标准。1996 年苹果公司收购 NeXT,NeXTSTEP/OPENSTEP 成为 macOS 的基础,其开发环境被命名为 Cocoa<ref name="apple_acquisition">[[wikipedia:Objective-C#NeXT_and_Apple|Wikipedia: Objective-C – NeXT and Apple]]</ref>。2005 年起,苹果逐步引入 LLVM 和 Clang,以取代 GCC 成为官方编译器<ref name="clang">[https://clang.llvm.org/ Clang project website]</ref>。 | ||
== 语法 == | == 语法 == | ||
Objective‑C 是 C 语言的严格超集,任何 C 代码均可在 Objective‑C 编译器中直接通过编译<ref name="apple_intro" />。其面向对象语法源自 Smalltalk 的消息传递范式,而非 C++ 的静态函数调用。非面向对象部分(如类型、流程控制、函数声明)与 C 完全一致。 | Objective‑C 是 C 语言的严格超集,任何 C 代码均可在 Objective‑C 编译器中直接通过编译<ref name="apple_intro" />。其面向对象语法源自 Smalltalk 的消息传递范式,而非 [[C++]] 的静态函数调用。非面向对象部分(如类型、流程控制、函数声明)与 C 完全一致。 | ||
=== 消息传递 === | === 消息传递 === | ||
| 第58行: | 第61行: | ||
== 使用情况 == | == 使用情况 == | ||
Objective‑C 是苹果平台(iOS、macOS、tvOS、watchOS)应用程序开发的主要语言,其普及程度与 iPhone 及 iOS 生态系统的成功密切相关<ref name="tiobe_2013">[https://www.tiobe.com/tiobe-index/ TIOBE Index (historical data, 2013)]</ref>。在 2013 年,Objective‑C 曾位列 TIOBE | Objective‑C 是苹果平台(iOS、macOS、tvOS、watchOS)应用程序开发的主要语言,其普及程度与 iPhone 及 iOS 生态系统的成功密切相关<ref name="tiobe_2013">[https://www.tiobe.com/tiobe-index/ TIOBE Index (historical data, 2013)]</ref>。在 2013 年,Objective‑C 曾位列 TIOBE [[编程语言]]排行榜第三名<ref name="tiobe_2013" />。 | ||
2014 年苹果发布 Swift 语言,并积极推广其作为 Objective‑C 的继任者。然而,Objective‑C 的存量代码库依然庞大,苹果也保持对 Objective‑C 的持续支持,且两种语言可在同一项目中无缝互操作<ref name="swift_interop">[https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis Apple Developer: Swift and Objective-C Interoperability]</ref>。目前 Objective‑C 仍在苹果生态系统中扮演重要角色,特别是在维护历史项目或使用未更新至 Swift 的第三方框架时<ref name="current_status">[https://www.tiobe.com/tiobe-index/ TIOBE Index (current trends)]</ref>。 | 2014 年苹果发布 Swift 语言,并积极推广其作为 Objective‑C 的继任者。然而,Objective‑C 的存量代码库依然庞大,苹果也保持对 Objective‑C 的持续支持,且两种语言可在同一项目中无缝互操作<ref name="swift_interop">[https://developer.apple.com/documentation/swift/imported_c_and_objective-c_apis Apple Developer: Swift and Objective-C Interoperability]</ref>。目前 Objective‑C 仍在苹果生态系统中扮演重要角色,特别是在维护历史项目或使用未更新至 Swift 的第三方框架时<ref name="current_status">[https://www.tiobe.com/tiobe-index/ TIOBE Index (current trends)]</ref>。 | ||