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|标题=Objective-C|内容={{!}}-
{{Infobox
! 中文名
| title = Objective-C
{{!}} 扩充C的面向对象编程语言
 
{{!}}-
| label1 = 中文名
! 英文名
| data1 = 扩充C的面向对象编程语言
{{!}} Objective-C
 
{{!}}-
| label2 = 英文名
! 简称
| data2 = Objective-C
{{!}} ObjC、OC
 
{{!}}-
| label3 = 简称
! 设计者
| data3 = ObjC、OC
{{!}} 布莱德·考克斯(Brad Cox)、Tom Love
 
{{!}}-
| label4 = 设计者
! 设计公司
| data4 = 布莱德·考克斯(Brad Cox)、Tom Love
{{!}} Stepstone(原 Productivity Products International)
 
{{!}}-
| label5 = 设计公司
! 面市时间
| data5 = Stepstone(原 Productivity Products International)
{{!}} 1980年代
 
{{!}}-
| label6 = 面市时间
! 当前版本
| data6 = 1980年代
{{!}}
 
{{!}}-
| label7 = 当前版本
! 主要实现产品
| data7 =
{{!}} Clang、GCC
 
{{!}}-
| label8 = 主要实现产品
! 受其影响
| data8 = Clang、GCC
{{!}} Smalltalk、C
 
{{!}}-
| label9 = 受其影响
! 影响语言
| data9 = Smalltalk、C
{{!}} Swift、Java(部分特性)
 
{{!}}-
| label10 = 影响语言
! 操作系统
| data10 = Swift、Java(部分特性)
{{!}} macOS、iOS、Linux(通过GNUstep)等
 
{{!}}-
| label11 = 操作系统
! 网站
| data11 = macOS、iOS、Linux(通过GNUstep)等
{{!}} [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-0201103939.</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>。
 
| 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="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>。
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 年,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>。
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 编程语言排行榜第三名<ref name="tiobe_2013" />。
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>。