Objective-C基本数据类型整理

来源:互联网 发布:上海软件开发公司排名 编辑:程序博客网 时间:2024/04/30 18:21

目前真正明白了学通了C语言,什么都是浮云。

Objective-C语言中,基本数据类型有三大类:标量,指针,结构体。

一、标量

标量是最基本形式的变量。

1.       整型(int

4 Byte32位。取值范围-2,147,483,648~+2,147,483,647

格式控制符:%i

0XXX(八进制数):以0开头。格式符为%o,显示的八进制不带前导0

                                                          格式符为%#o,显示的八进制带前导0

0xXXX(十六进制数):以0x开头。格式符为%x,显示的十六进制不带前导0x

                             格式符为%#x,显示的十六进制带前导0x

                             格式符为%X或者%#X,显示的十六进制用大写

(short int) 2 Byte;

(long int) 4 Byte

2.       浮点型(float

4 Byte 32位。取值范围是-16,777,216~+16,777,216

格式符%f

格式符%e,科学计数法显示。

格式符%g,指数的值小于-4或者大于5,采用%e,否则%f

 

3.       双精度型(double默认的浮点数都是double型。除非在数字后面+f

8Byte64位。取值范围是-2,147,483,647~+2,147,483,647

格式符与float相同。

 

4.       字符型(char

1 Byte8位。格式符 %c

 

5.       布尔型(BOOLYES/NO

6.       id类型

格式符%p

7.       特殊NSIntegerNSUInteger

据说可以根据编译平台架构自动在32位和64位之间切换,不明白。。。

NSInteger:32味机器上,和int相同。在64位机器上,范围是

-4,294,967,296~+4,294,967,296

NSUInteger:32位机器上和Unsigned int相同。

还有各种Long型,和Unsigned的型

 

 

二、指针

存放地址的变量。和C语言里的指针基本相同。不再赘述。

如:int *p = &a;

 

 

三、结构体(struct)

例:struct Point

{

         int x;

int y;

};

struct Point p1;

p1.x = 12;

p1.y = 10;

 

 

 

 

 

 

 

 类

例如在文件中定义一个类:Fraction

一、类的定义与声明:

Objective- C中,类的分为接口和实现两部分。

类的接口类似与C语言中的类的声明,声明类中的属性和方法。

类的实现类似于C++中的类的定义,定义类中的方法。

//类的接口

@interface Fraction : NSObject  //Objective-C中的基类是NSObject,就像Object之于JAVA

{

//定义类的变量,专业一点叫做类的属性

         int numerator;

    int denometer;

}

//声明类的方法

-(void) print;//” - ”表示方法是对象调用,如果” + ”,则表示属于类的方法。相当于C++中的Static方法

-(void) setNumerator : (int) n//n是形式参数

 

//类的实现

@implementation Fraction

-(void) print

{

}

-(void) sertNumerator:(int) n

{

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


二、类中变量的访问:

默认情况下,类中的变量为public属性。

可以自己定义方法对变量进行赋值和搜索。

赋值:

1)如对一个变量进行赋初值:

-(void) setNumeric : (int) n;函数调用:[fraction setNumerator:2];

 

2)同时对两个变量赋初值:

-(void) setNumeric : (int) nandDenometer :(int) d;

函数调用:[fraction setNumeric:2andDenometer : 5];

 

或者不带参数名的参数

-(void) setVar : (int) n: (int) d

函数调用:[fraction setNumeric:2:5];

 

3)Objective-C 2.0开始,可以自动生成设置和获取属性的函数方法,统称为存取器方法。

在接口中增加如下语句:

@property : int numerator,denometer;

在实现中增加如下语句:

@synthesize numerator,denometer

这样可以直接生成了设置(setNumerator)和获取变量(点运算符)的方法。

 

三、Self关键字

相当于C++中的“this

 

四、对象的定义:

都要定义成指针的形式。定义格式如下(包括分配空间,和初始化)。

Fraction *fraction = [[Fraction alloc] init];

 

 

五、释放对象空间

对于已经分配了空间的对象,在程序结尾要进行内存空间的释放,否则造成内存泄露。

[fraction release];

内存泄露是一个防不胜防的问题。例如定义了一个方法如下:

在主函数中进行调用:

有两种方法实现了分数的相加和打印输出。但是第二种方法造成了内存的泄露。因为[aFraction add:bFraction]实际上生成了一个Fraction对象,但却无法对其进行释放。如果这条语句位于循环语句中,将会造成严重后果。

 

六、类的继承:

单继承机制。(权限问题后续补充)

、@className语句和#import”classname.h”的区别:

前者执行效率高。相当于仅仅对将要用到的类进行声明。编译器只要知道类的名字即可。

后者执行效率低。但当下面的文件中要调用这个类中的函数,则必须包含整个文件。

 

 

 

0 0
原创粉丝点击