今天我们主要讲oc的数据类型,说起数据类型,大家可能会想到C语言的数据类型,如:int ,float……,当然我们的OC也有数据类型。那OC的数据类型是怎么分的呢?
OC数据类型
我们在OC阶段通常叫数值类型。
oc的数值类型主要分为两种:typedef类型和对象类型;
以常用数据类型为例,C和OC数值类型的对比如下:
结构体类型 NSPoint…
我们先看看typedefy的结构体类型,他是复杂的数据类型,记住不是对象类型哦。
NSPoint point = NSMakePoint(10, 10);//声明初始化一个点
NSRect rect = NSMakeRect(0, 0, 100, 100);//矩形区域
NSSize size = NSMakeSize(100, 100);//尺寸
NSRange range = NSMakeRange(1, 2);//范围
NSValue
我们经常说oc我们只讲对象和类,在oc中我们参与操作的很多时候基本都是对象,但是如果我们的数据是基本数据类型或则复杂的数据类型,那我们怎么办呢—–使用封装。
在OC中我们可以使用NSValue(数值对象),主要用于复杂数据类型的对象化封装,当然也可以将简单数据类型封装为对象。这样我们就可以用他们操作了。
NSPoint point = NSMakePoint(10, 10);//声明初始化一个点
NSSize size = NSMakeSize(100, 100);//尺寸
//封装数据
NSValue *pointValue = [NSValue valueWithPoint:point];
NSLog(@"%@", pointValue);
NSValue *sizeValue = [NSValue valueWithSize:size];
NSLog(@"%@", sizeValue);
//解封装
NSPoint piont1 = [pointValue pointValue];
NSLog(@"%@",NSStringFromPoint(piont1));
NSSize size1 = [sizeValue sizeValue];
NSLog(@"%@",NSStringFromSize(size1));
NSNumber
数值对象,用于简单数据类型的对象化封装;
//封装基本数据
NSNumber *intNumber = [NSNumber numberWithInt:12356789];
NSLog(@"%@", intNumber);
NSNumber *floatNumber = [NSNumber numberWithFloat:10.5];