Objective-C简介

来源:互联网 发布:php iterator接口 编辑:程序博客网 时间:2024/05/02 02:31

1. 诞生

     20世纪80年代早期,布莱德.考斯(Brad Cox)在其公司StepStone发明了Objective-c.

     Objective-C是C语言的一个扩展集,Brad Cox意在将流行的、可移植的C语言与Smalltalk语言结合在一起。

这意味着Objective-C是能够创建和操作对象的一门新的程序设计语言。



2. 发展

     1988年,Steve Jobs穿件的NeXT Computer(94年更名为NeXt Software)公司获得了Objective-C语言的授权,并开发出了Objective-C的语言库和一个名NextSTEP的开发环境。

          苹果公司1996年收购NeXT,NextSTEP被更名为Cocoa。Objective-C的发展与苹果公司的发展紧密联系在一起。


3. Objective-C与C语言的相同点

  (1)  Objective-C是C语言的一个扩展集,C中可以使用的元素,在Objective-C中都可以使用。

          数据类型int,float,struct,指针*

          宏定义  #define

          #if  #endif

          #ifndef     #define

          #include

 

  (2)  支持三种基本的程序结构

          顺序、选择、循环

  (3)  main()函数为程序的入口点

  (4)  注视://或者/*......*/


4. Objective-C与C语言的不同点

   (1) 布尔类型

       C语言中使用bool,取值true,false

       Objective-C中取值YES,NO

     

   (2) 使用#import来包含头文件,但它也支持#include

        #import<>:告诉编译器从系统自带的库文件中查找

        #import"" :双引号表示从当前项目文件中查找。


    (3)@符号是Objective-C在标准C语言基础上添加的特性之一。

        @"Hello"表示该字符串应该作为Cocoa的NSString元素来处理。

        Cocoa对其所有函数,常量和类型名称都添加了"NS"前缀。


    (4) Objective-C中id是一种指针,用于表示指向任何种类的对象

    (5) Objective-C是面向对象的。



5. Objective-C中的类

    (1) 类的声明

        @interface Circle:NSObject

        {

              int i;

        }    

        -(void) draw;//"-"表示类的实例即对象的方法

        -(void) drawAgain; // "+"表示是类的方法

        @end

        如果使用Cocoa,那么每一个类都应该从NSObject中继承,它提供了大量有用的特性。


    (2) 类的实现

        @implementation Circle

        -(void) draw

        {

            .....

        }

        +(void) drawAgain

        {

           .......

        }

       @end //circle


    (3) 创建对象

      Circle *circleOne = [Circle new];

      Circle *circleTwo = [[Circle alloc] init];

      大部分对象都穿件的是指向该对象的指针,少数数据类型除外,例如基本类型。

      Objective-C把int,float看做对象的一部分。

      alloc:表示分配内存

      init: 表示初始化对象


    (4) 初始化和释放对象

    -(id) init 和 -(void) dealloc

     继承自NSObject的类都要重写这两个方法。


    (5) 不支持多继承

     Objective-C不支持多继承,但是它采用其他的途径来达到多继承的目的。例如:类别、协议。


    (6) 类别

    类别:向某一个类中添加方法,不能添加新的数据成员。

    声明类别:

    @interface类名(类别名称);

    .....//此处为该类别需要声明的方法名称

    @end

     实现类别:

      @implementation 类名(类别名)

       .....//这里是方法的实现

      @end


原创粉丝点击