首页> 学习指导中心 > 学习指南 > Objective -C 的介绍

学习指南

Objective -C 的介绍

发布时间:2013-06-25浏览次数:978

Objective-C是苹果Mac OS X 上开发的首选语言,主要是因为Mac OS X 技术源自NextStepOpenStep操作系统,因为OPENSTEP的软件架构(framework)都是用Objetive-C 写成,所以MacOS X上的开发最佳语言自然也就是Objective-C 了。

 

Object-C是由 Brad Cox在80年代初在第一个纯面向对象语言Smalltalk基础上写成。后来他创立了StepStone公司从事Objective-C的推广。1988年,Steve JobsNextStep采用Objective-C作为开发语言,1992年GNU gcc编译器中包含了对Objective-C的支持(gnu-objc runtime) Dennis Glating 写了第一个run-timeRichard Stallman 第二个,最近的是Kresten Krab Thorup在丹麦读大学时写的,他后来到NextStep工作。

目前, Objective-C Mac OS X的首要开发语言,也是GNUstep Linux 和其它平台上的开发语言。

Objective-C ANSI C的超集,扩展了C 语言使它具备面向对象设计的能力,如类,消息和继承。Objective-C 程序中可以利用现有的C语言代码,使其利用现有的软件架构。这也是为甚莫Objective-C 过去多年间能够成为一种流行的用户界面开发语言而且至今没有消亡,因为一方面用它可以实现底层系统编程,另一方面可以支持利用动态架构进行开发。

 

Objective-C C++的比较

单一继承:

Objective-C不支持多重继承,(同JavaSmalltalk),而C++语言支持多重继承。

动态:

Objective-C是动态定型(dynamicaly typed)所以它的类库比C++要容易操作。Objective-C 在运行时可以允许根据字符串名字来访问方法和类,还可以动态连接和添加类。

C++ 跟从面向对象编程里的Simula 67(一种早期OO语言)学派,而Objecive-C属于Smalltalk学派。

C++里,对象的静态类型决定你是否可以发送消息给它,而对Objecive-C来说,由动态类型来决定。Simula 67学派更安全,因为大部分错误可以在编译时查出。Smalltalk学派更灵活,比如一些Smalltalk 看来无误的程序拿到Simualr 67那里就无法通过。

从很多方面来看,C++Objective-C的差别,与其说时技术上的,不如说是思维方式上的。你是否想更安全而舍弃灵活性?Simular67学派的支持者声称既然程序设计出色何必再要灵活性(谎话!),而 Smalltalk学派则辩称为了灵活可以容忍运行时多出错(也是谎话!)

Objective-C现在几乎已经变成了苹果的专利了,可以直接在苹果的Xcode上编译Objective-C程序,但是在Windows平台下的编译工具就寥寥无几了,本身这种语言用的人就不是很多。今天在网上突然看到了有人发帖,可以在Windows平台下编译Objective-C,就抱着好奇的心态试了试。没想到,居然成功了,现在就把怎样搭建Objective-C编译平台的经验拿出来和大家分享。

1、安装GNUstep

GNUstep Windows Installer提供了Windows平台下的Object-C的模拟开发环境,一共有四个软件包,其中GNUstep SystemGNUstep Core是必装的,GNUstep DevelCairo Backend是选装的。只安装前两个就够了。

2、编写Objective-C代码

安装完成后,在开始菜单里的GNUstep选项里执行shell,就能打开命令行。直接在 Windows里进入C:\GNUstep\home\Administrator(我的是Administrator,可能有的不一样)目录,在这里用你喜欢的工具(现在UltraEditNotepad++编辑器好像可以代码高亮)编写Object-C程序。

如:HelloWorld.m

C代码

  1.  #import<Foundation/Foundation.h> 

  2.   

  3.  int main (int argc, const char*argv[]) { 

  4.     NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init]; 

  5.     NSLog(@"Hello World!"); 

  6.     [pool drain]; 

  7.  

  8.     return 0; 

   9.} 

 10.  

  11.3、配置环境变量 

  12.这一步很重要。GNUstep.sh是用来设置GNUstep开发环境变量的,如果没有执行,就会有很多头文件,库文件,命令找不到 

 13.  

  14.在一个目录里写好了源代码以后,编写一个make配置文件,名字必须叫GNUmakefile,内容是 

 15.  

  16.include $(GNUSTEP_MAKEFILES)/common.make 

 17.  

  18.TOOL_NAME=Test 

  19.Test_OBJC_FILES=HelloWorld.m 

 20.  

  21.include $(GNUSTEP_MAKEFILES)/tool.make 

 

 #import <Foundation/Foundation.h>

 

 intmain (int argc, const char *argv[]) {

    NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init];

   NSLog(@"Hello World!");

   [pool drain];

 

   return 0;

}

3、配置环境变量

这一步很重要。GNUstep.sh是用来设置GNUstep开发环境变量的,如果没有执行,就会有很多头文件,库文件,命令找不到

在一个目录里写好了源代码以后,编写一个make配置文件,名字必须叫GNUmakefile,内容是

include $(GNUSTEP_MAKEFILES)/common.make

TOOL_NAME=Test

Test_OBJC_FILES=HelloWorld.m

include $(GNUSTEP_MAKEFILES)/tool.make

可以修改上面的黑体部分

然后就是

make

命令运行成功就可以看到新增了一个obj目录,里面就有你要的可执行文件和.o文件。

OK 搞定了。