Objective-C 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Objective-C 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: 未知
开发语言: C/C++
操作系统: OS X
收录时间: 2008-12-27

Objective-C,通常写作 ObjC 和较少用的 Objective C Obj-C,是扩充 C 的面向对象编程语言。它主要使用于 Mac OS X 和 GNUstep 这两个使用 OpenStep 标准的系统,而在 NeXTSTEP 和 OpenStep 中它更是基本语言。Objective-C 可以在 gcc 运作的系统写和编译,因为 gcc 含 Objective-C 的编译器。

Objective-C 是非常「实际」的语言。它使用一个用 C 写成、很小的运行库,只会令应用程序的大小增加很小,和大部分 OO 系统使用极大的 VM 执行时间会取代了整个系统的运作相反。ObjC 写成的程序通常不会比其原始码大很多。而其函式库(通常没附在软件发行本)亦和 Smalltalk 系统要使用极大的存储器来开启一个窗口的情况相反。

Objective-C 的最初版本并不支持垃圾回收。在当时这是争论的焦点之一,很多人考虑到 Smalltalk 回收时有漫长的「死亡时间」,令整个系统失去功用。Objective-C 为避免此问题才不拥有这个功能。虽然某些第三方版本已加入这个功能(尤是 GNUstep), Apple 在其 Mac OS X 10.3中仍未引入这个功能。

另一个问题是 ObjC 不包括命名空间机制(namespace mechanism)。取而代之的是程序设计师必须在其类别名称加上前缀,时常引致冲突。在2004年,在 Cocoa 编程环境中,所有 Mac OS X 类别和函式均有「NS」作为前缀,例如 NSObject 或 NSButton 来清楚分辨它们属于 Mac OS X 核心;使用「NS」是由于这些类别的名称在 NeXTSTEP 开发时定下。

虽然 Objective-C 是 C 的超集,但它也不视 C 的基本型别为第一级的对象。

和 C++不同,Objective-C 不支援运算子多载(它不支持ad-hoc多型)。亦与 C++不同,但和 Java 相同,Objective-C 只容许物件继承一个类别(不设多重继承)。Categories 和 protocols 不但可以提供很多多重继承的好处,而且没有很多缺点,例如额外执行时间过重和二进制不兼容。

 

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

Objective-C 的相关博客

Objective-C中的常量 - Constants in Objective-C

问题: I'm developing a Cocoa application, and I'm using constant NSString s as ways to store key names for my prefer...

Objective-C中的常量 - Constants in Objective-C

问题: I'm developing a Cocoa application, and I'm using constant NSString s as ways to store key names for my prefer...

Objective-C教程:Objective-C类的定义

Objective-C是面向对象的编程语言,所以具备面向对象编程语言的共性即:支持可重用的数据和函数的封装体,也就是大家常说的类...

The Objective-C runtime

The Objective-C runtime

Objective-c扩展名

Objective-C诞生的时候,扩展名.m代表message,指的是Objective-c的一个主要特性.

objective-c(三)

这篇来讲我们上篇说的第一个例子: #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autorel...

objective-c总结

1. 在objective-c中使用#import<>导入系统头文件,#import""导入用户头文件,#import可以保证头文件只被包含一次。 2. 基本...

Objective-C Loops

  There may be a situation, when you need to execute a block of code several number of times. In general, statement...

Objective-C之Property

在Objective-C中引入了属性这个概念,当然了这东西并不是Objective-C首创而且独有的特性,例如C#里边也有属性的概念,因此学过...

评论 (5)

加载中
Objective-C 其实不是C,语法太便扭了
2011/10/04 08:37
回复
举报
已经在 Win7 下用 GNUstep 运行第一个 Objective-C 程序了,hello oschina !
2012/11/21 20:50
回复
举报
当前最新的 GNUstep 版本不支持 Objective-C 2.0 ,书上讲的很多新语法都没法试,还是得 Mac!
2012/11/21 21:48
回复
举报
昨天看了8章《Objective-C程序设计》,今天继续,两天精通 Objective-C 之旅! 20
2012/11/22 09:00
回复
举报
大神都这么努力,我们有什么理由不能努力了 #Objective-C#
2015/05/03 08:54
回复
举报
更多评论
5 评论
35 收藏
分享
返回顶部
顶部