1.基本数据类型
C语言中有5种基本类型:char、int、float、double、void,Object-C中仍然可用,并且这些基本类型可以用修饰符unsigned、signed、short、long进行修饰。
整型的每一种都有无符号(unsigned)和有符号(signed)两种类型,在默认情况下声明的整型变量都是有符号的类型,如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为–32768 ~ 32767(16位2进制的最高位作为符号位‘1’为负‘0’为正),而unsigned能存储的数据范围则是0~65535(这个最高位不用做符号位,所以是2的16次方,一共65536)
short和long很明显表示的是字节的长度。short代表两字节,int、long代表4字节
2.Object-C中的BOOL
在其他语言中0定义为假,非0定义为真。而在Object-C中不同,1定义为YES,0定义为NO。0和1以外的数据既不是YES也不是NO。
3.Object-C的结构体
Cocoa的Foundation框架中定义了大量结构体,如NSRange、NSPoint、NSSize等
NSRange结构体如下,location表示范围从哪个数字开始,length表示范围的大小
typedef struct _NSRange{
unsigned int location;
unsigned int length;
}NSRange;
初始化的方法
NSRange range;
range.length = 3;
range.location = 6;
表示二维坐标上的点
typedef struct _NSPoint{
float x;
float y;
}NSPoint;
表示图形大小
typedef struct _NSSize{
unsigned int location;
unsigned int length;
}NSSize;
表示矩形
typedef struct _NSRect{
unsigned int location;
unsigned int length;
}NSRect;
4.NS类
Object-C是面向对象的C语言,除了对C的基本类型全面支持外,当然也对这些类型进行了面向对象的封装和拓展,Cocoa把所有的类都加了NS前缀,来自于Cocoa前身NextSTEP的缩写,比如NSNumber、NSArray、NSDictionary.
下面介绍几个常用的NS类
(1)NSString和NSMutableString
出于性能考虑,我们不能改变NSString的值,我们可以用NSString的可变版本NSMutableString,后者与前者几乎一模一样但是可以对其存储的字符串进行改变操作
(2)NSNumber
NSNumber用于处理所有与数字相关的数据类型,从整型到浮点型的数据,也包括前面BOOL类型,他们都有相应的方法,不知道可以查一下。
(3)NSArray和NSMutableArray
NSArray和C语言中的数组是一样的,但是却有些他自己的特性,比如不用对下标越界进行判断,和 Java中的ArrayList类似,并且只能存储Object-C对象。不能存储空值nil因为nil作为数组的结束符。
创建方式如下:
NSArray *array = [NSArray arrayWithObjects:@"one",@"tow",@"three", nil];
NSLog([array objectAtIndex:2]);//输出第三个元素three
与NSString和NSMutableString的区别一样,NSMutableArray是可以修改的,比如说删除,有着与之对应的方法。
(4)NSDictionary和NSMutableDictionary
字典相当于Java中的散列表,或者是C语言当中的关联数组定义方法如下
NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:obj1,@"first object", obj2,@"second object",nil];
Mutable同样是可以修改的。
(5)NSDate和NSDataFormatter
NSDate这个当然是用来显示时间的,最常用的就是获取当前时间
NSLog(@"当前时间:%@",[NSDate date]); 输出结果:当前时间:2014-03-02 01:59:18 +0000
NSDataFormatter说的是把日期格式化输出学过java的都应该懂得