Objective-C数据类型
来源:互联网 发布:交易员训练软件 编辑:程序博客网 时间:2024/06/06 13:29
一、 数据类型
Obj-C是C语言的超集,之前我们都知道了,所以Obj-C中的数据类型分为两种:一种是基于C语言的基本数据类型;另一种是Obj-C特殊的数据类型。
1. C语言基本数据类型
Obj-C基于C语言的基本数据类型有:int,float,double和char,那么我们来看下书上的一个比较全面的例子,包括各个类型的赋值和输出。
那么上面这个例子的最终输出结果为:
integerVar=100
floatingVar=331.79009
doubleVar=8.440000e+11
doubleVar=8.44e+11
charVar='W'
还有一些C语言里也有的数据类型:
Long型
Long long型
Short型
Unigned型
signed型
2. Obj-C的特殊数据类型
除了上面列出的常用数据类型以外,Obj-C还提供了几个比较特殊的数据类型:id、BOOL、nil、SEL、YES和NO
(1)在Obj-C中id可以用来标识任何类的对象,那么实际上id是一个指针,并且指向一个类结构体,定义如下所示:
Typedef struct objc_object{
Class isa;
}*id;
那么我们可以把id当成C语言的void*来理解,可以用它来映射任何对象类型,并且可以给它传任何消息,如果传递给它的消息它不支持的话,就会返回异常。我们还是参照书上的一个例子来看下id的用法:
(2)BOOL类型等同于C/C++中的bool类型,即其值只能是真(true)或假(false)。
BOOL类型的定义如下:
Typedef signed char BOOL
Obj-C中的真和假的关键字是YES和NO,其实也就相当于我们常用的其他语言中的true和false。
YES和NO的定义如下:
#define YES (BOOL) 1
#define YES (BOOL) 0
那么我们还是看一个实例:
(3)nil代表一个空对象,相当于我们其他语言里的NULL,在Obj-C中nil表示一个Objective-C对象的指针指向空,我们看一个实例:
那么如果我们直接去掉if判断条件,在Obj-C中是不会做任何操作的,因为Obj-C中如果一个空对象调用任何方法,都是不会做任何操作的,但是像其他的语言中,比如C\C++\Java\C#等,这样儿做是会报错的。
(4)SEL是selector的一个类型,,代表一个方法,等同于C语言中的函数指针,下面的这个例子说明SEL是如何使用的。
@selector关键字是Obj-C语言中专属的关键字,作用就是得到一个方法指针。上面的例子中传入名字为render的方法,使得oneMethod成为指向render方法的指针。oneObject假设是已经实例化的对象,通过调用performSelector方法来执行render方法,那么这里的performSelector方法是NSObject类中实现的方法,因为每个Obj-C类都是继承自NSObject类,所以所有实例化之后的对象都可以调用此方法。
Obj-C是C语言的超集,之前我们都知道了,所以Obj-C中的数据类型分为两种:一种是基于C语言的基本数据类型;另一种是Obj-C特殊的数据类型。
1. C语言基本数据类型
Obj-C基于C语言的基本数据类型有:int,float,double和char,那么我们来看下书上的一个比较全面的例子,包括各个类型的赋值和输出。
- #import <Foundation/Foundation.h>
- int main (int argc,char *argv[])
- {
- NSAutoreleasePool * pool=[[NSAutorreleasePool alloc] init]; //声明对象释放池
- int integerVar=100; //声明int变量
- float floatingVar=331.79; //声明float变量
- double doubleVar=8.44e+11; //声明double变量
- char charVar='W'; //声明char变量
- NSLog (@"integerVar=%i",integerVar); //使用NSLog函数输出
- NSLog (@"floatingVar=%f",floatingVar); //使用NSLog函数输出
- NSLog (@"doubleVar=%e",doubleVar); //使用NSLog函数输出
- NSLog (@"doubleVar=%g",doubleVar); //使用NSLog函数输出
- NSLog (@"charVar=%c",charVar); //使用NSLog函数输出
- [pool drain]; //释放对象释放池
- return 0;
- }
integerVar=100
floatingVar=331.79009
doubleVar=8.440000e+11
doubleVar=8.44e+11
charVar='W'
还有一些C语言里也有的数据类型:
Long型
Long long型
Short型
Unigned型
signed型
2. Obj-C的特殊数据类型
除了上面列出的常用数据类型以外,Obj-C还提供了几个比较特殊的数据类型:id、BOOL、nil、SEL、YES和NO
(1)在Obj-C中id可以用来标识任何类的对象,那么实际上id是一个指针,并且指向一个类结构体,定义如下所示:
Typedef struct objc_object{
Class isa;
}*id;
那么我们可以把id当成C语言的void*来理解,可以用它来映射任何对象类型,并且可以给它传任何消息,如果传递给它的消息它不支持的话,就会返回异常。我们还是参照书上的一个例子来看下id的用法:
- id object; //声明一个id类型的对象
- object=[[Car alloc] init];//实例化一个Car的对象并且传递给object,此时object是Car的对象
- [object run]; //调用Car的run方法
- object=[[Bike alloc] init]; //实例化一个Bike对象并传递给object,此时object是Bike的对象
- [object run]; 调用Bike的run方法
(2)BOOL类型等同于C/C++中的bool类型,即其值只能是真(true)或假(false)。
BOOL类型的定义如下:
Typedef signed char BOOL
Obj-C中的真和假的关键字是YES和NO,其实也就相当于我们常用的其他语言中的true和false。
YES和NO的定义如下:
#define YES (BOOL) 1
#define YES (BOOL) 0
那么我们还是看一个实例:
- BOOL isFinished=NO;//声明一个BOOL变量并赋初始值为假
- if(isFinished) //如果为真就执行括号中的语句
- {
- }
- isFinished=YES; //将isFinished变量赋值为真
- if(isFinished) //此时isFinished为真,执行下面括号里的语句
- {
- }
(3)nil代表一个空对象,相当于我们其他语言里的NULL,在Obj-C中nil表示一个Objective-C对象的指针指向空,我们看一个实例:
- Car * myCar=nil;//声明一个Car的变量并且赋值为空,此时myCar相当于空对象
- if(myCar) //判断myCar对象是否为空,如果为空就执行startEngine方法
- {
- [myCar startEngine];
- }
那么如果我们直接去掉if判断条件,在Obj-C中是不会做任何操作的,因为Obj-C中如果一个空对象调用任何方法,都是不会做任何操作的,但是像其他的语言中,比如C\C++\Java\C#等,这样儿做是会报错的。
(4)SEL是selector的一个类型,,代表一个方法,等同于C语言中的函数指针,下面的这个例子说明SEL是如何使用的。
- SEL oneMethod=@selector(render);//声明一个SEL变量,并且赋值为方法render的指针
- [oneObject performSelector: oneMethod];//假设oneObject已经实例化,执行render方法
@selector关键字是Obj-C语言中专属的关键字,作用就是得到一个方法指针。上面的例子中传入名字为render的方法,使得oneMethod成为指向render方法的指针。oneObject假设是已经实例化的对象,通过调用performSelector方法来执行render方法,那么这里的performSelector方法是NSObject类中实现的方法,因为每个Obj-C类都是继承自NSObject类,所以所有实例化之后的对象都可以调用此方法。
0 0
- Objective-C 2.0数据类型
- Objective-C基本数据类型
- objective-c基本数据类型
- objective-C 数据类型转换
- Objective-C中的数据类型
- Objective-c 数据类型
- Objective-C语言:数据类型
- Objective-C 2.0数据类型
- Objective-C id数据类型
- objective-c数据类型
- Objective-c 数据类型
- objective-c数据类型
- Objective-C数据类型
- objective-c数据类型
- Objective-c:数据类型
- Objective-C 数据类型
- objective-c基本数据类型总结
- objective-c中的数据类型转换
- CentOS 7查看源代码
- 【OpenCV】直方图(二)反向投影
- Time类中的运算符重载
- 如何动态的给frame的src赋值
- C/C++ 十六进制char*与Binary char*相互转换
- Objective-C数据类型
- <![CDATA[mod_rewrite 详解]]>
- Hadoop自定义输出日志log4j
- ie技术文章网址1
- SmartRF04EB制作介绍
- 学习Windows Phone 8开发资料汇总
- 常用正则表达式大全!
- IOS get请求和post请求的用法和区别
- iOS Code Signing Troubleshooting