首页 > 学院 > 开发设计 > 正文

objective-C概述以及Xcode的简单使用方法。

2019-11-14 19:34:40
字体:
来源:转载
供稿:网友
  • objcetive-c 介绍:

Objective-C,通常写作ObjC和较少用的Objective C或Obj-C,是扩充C的面向对象编程语言。它主要使用于Mac OS X和GNUstep这两个使用OpenStep标准的系统,而在NeXTSTEP和OpenStep中它更是基本语言。1980年代初布莱德·确斯(Brad Cox)在其公司Stepstone发明Objective-C。他对软件设计和编程里的真实可用度问题十分关心。Objective-C最主要的描述是他1986年出版的Object Oriented PRogramming: An Evolutionary Approach. Addison Wesley. ISBN 0-201-54834-8.

  • objective-c 用途:

Objective-C用途:编写IOS操作系统(如:iphone、iPod touchiPad 等苹果移动终端设备 )应用程序和Mac OS X操作系统应用程序的利器。 Objective-C的流行当归功于iPhone的成功,因为Objective-C被用于编写iPhone应用程序。

  • objective-c 语言特性:

ObJC是非常实际的语言,它是一个用C写成,很小的一个运行库,只会使应用程序的尺寸增加很小。ObJC完全兼容标准C语言(C++兼容C语言只是在大部分语法上)而在此基础上增加了面向对象编程语言的特性以及smalltalk消息机制。

ObJC为何不支持垃圾回收机制,因为在smalltalk回收时有漫长的死亡时间,容易令整个系统市区功用,ObJC为避免此问题才不拥有这个功能,虽说某些第三方软件加入了垃圾回收机制这个功能,但是Apple在其Mac OS X 10.3中仍未使用这个功能。

  •  objective-C与C++的不同

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

  

  • Objective-C和C++的比较
  单一继承:
Objective-C不支持多重继承,(同Java和Smalltalk),而C++语言支持多重继承。
  动态:
Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。
C++ 跟从面向对象编程里的Simula 67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。
在C++里,对象的静态类型决定你是否可以发送消息给它,而对Objective-C来说,由动态类型来决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。 而Smalltalk学派更灵活,比如一些Smalltalk 看来无误的程序拿到Simualr67那里就无法通过。
从很多方面来看,C++和Objective-C的差别,与其说是技术上的, 不如说是思维方式上的。你是否想更安全而舍弃灵活性?Simular67学派的支持者称既然程序设计出色何必再要灵活性,而 Smalltalk学派则称为了灵活可以容忍运行时多出错。
 
  • 优缺点:

Xcode4版本的推出,加入了自动释放,虽不能直截了当的说那就是“垃圾回收”,因为两者机制不同。在Xcode4中的自动释放,也就是ARC(Automatic Reference Counting)机制,是不需要用户手动去Release一个对象,而是在编译期间,编译器自动帮你添加那些以前你经常写的[NSObject release]。

另一个问题是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只容许对象继承一个类别(不设多重继承)。
由于Obj-C使用动态运行时类型,而且所有的方法都是函数调用(有时甚至连系统调用(syscalls)也如此),很多常见的编译时性能优化方法都不能应用于Obj-C(例如:内联函数常数传播、交互式优化、纯量取代与聚集等)。这使得Obj-C性能劣于类似的对象抽象语言(如C++)。不过Obj-C拥护者认为既然Obj-C运行时消耗较大,Obj-C本来就不应应用于C++或Java常见的底层抽象。
  • 编写ObJC程序:

编译器:我用的就是Xcode 6.01/5.11(愿意用哪个就用哪个吧,每个版本都有自己的优势。)

 
 
如果你是第一次使用Xcode,那么你就需要创建一个新的Xcode文件(Create a new Xcode project 选项)
 
选择 Command Line Tool 建立一个程序或者文件夹都是可以的
 
 
接下来就是创建工程的名字(Product Name)要符合建项的命名标准,然后是组织名(Organization Name) 组织名一般的命名规则是你的公司或者团队的域名的反向 比如说你的公司的域名是www.example.com,那么建议你的组织名就起为:com.example.接下来就是组织标识符(Organization identifier),命名规则就是你喜欢就好。language当然要选择ObJC啦。

一路next下去,我们基本上就已经创建好所需的工程了,现在图示的就是一些基本信息,上面有你的系统信息,还有一些工程选项BALABALALA,笔者现在英语水平有限,一大部也是看不太懂,主要还是靠猜。

OK,在Xcode左边的功能栏上,你会看见main.m的文件,这就是主函数了。单击main.m你就会看见如下代码。

@autoreleasepool 这个就是前文提到的,传说中的自动释放池了!这个代码当你创建好工程之后就已经帮你写好了,那么如何编译运行呢?

有没有看到那个播放键? 什么? 看不到? 那就先请你check一下你正在使用的编译器叫什么名字,有可能是你安装错了。。。

如果你清楚明白的看到了这个黑色的播放键,那么我就明确的说,这就是传说中的编译运行按钮~快捷键是(command+R)如果你的代码没有错误的话,那么将会有十分神奇的事情发生。神奇的事情发生了,在编译器的下方(左面的图框是调试框,右边的图框是编译框),你会看到编译结果。

到这里,基本的ObJC的概述和Xcode的简单使用方法就已经结束。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表