您的位置:首页 > 产品设计 > UI/UE

NSNumber与NSValue

2014-10-24 12:40 239 查看
Main.m

int main(int argc, const char * argv[])
{
/*____________________NSNumber的使用______________________________*/

//1.创建NSNumber(包装基本数据类型)
NSNumber *intNum = [NSNumber numberWithInt:100]; //将整型数据封装成number对象
NSNumber *longNum = [NSNumber numberWithLong:12345678];
NSNumber *floatNum = [NSNumber numberWithFloat:3.14f];
NSNumber *charNum = [NSNumber numberWithChar:'a'];
NSNumber *boolNum = [NSNumber numberWithBool:FALSE];
//添加到数组中
NSArray *arrary = @[intNum,longNum,floatNum,charNum,boolNum];
NSLog(@"arrary:%@",arrary);

//2.解包
int intValue = [intNum intValue];
long longValue = [longNum longValue];
float floatValue = [floatNum floatValue];
char charValue = [charNum charValue];
BOOL boolValue = [boolNum boolValue];

//3.优化语法
// NSNumber *intNum = [NSNumber numberWithInt:100];
//等价于
NSNumber *intNum1 = @100;
NSNumber *floatNum1 = @3.14;
NSNumber *boolNum1 = @YES;
NSNumber *charNum1 = @'a';

/*____________________NSValue的使用______________________________*/

//NSValue可以对结构体进行包装,NSValue是NSNumber的父类

//1.系统中已经存在的结构体
NSRange range = {1,3};
//封装成对象
NSValue *rgValue = [NSValue valueWithRange:range];
//解包
NSRange rg = [rgValue rangeValue];
NSLog(@"rg.location:%ld rg.length:%ld",rg.location,rg.length);

NSPoint point = {2.3,3.5};
NSValue *pValue = [NSValue valueWithPoint:point];
NSPoint p = [pValue pointValue];

//2.对自定义结构体封装和解包

//定义结构体
struct WXPoint {
float x;
float y;
};

struct WXPoint point1 = {5.6,7.8};

//封装
NSValue *wxValue = [NSValue value:&point1 withObjCType:@encode(struct WXPoint)];

//解包
struct WXPoint point2;
[wxValue getValue:&point2];
NSLog(@"x:%.2f y:%.2f",point2.x,point2.y);

/*____________________NSNUll的使用______________________________*/

// NSArray *nullArrary = @[@1,nil,@2,@3]; //错误,nil不能存放在数组中
NSNull *null1 = [NSNull null];
NSNull *null2 = [NSNull null];

NSArray *nullArrary = @[@1,null1,@2,null2,@3]; //在数组中可以存在NSNull类型的对象
NSLog(@"%@",nullArrary);
NSLog(@"%ld",nullArrary.count);

// for (id item in nullArrary) {
// if (item != [NSNull null]) {
// continue;
// }
// NSLog(@"%ld",[nullArrary indexOfObject:item]);
// }

for (int i=0; i<nullArrary.count; i++) {
id item = [nullArrary objectAtIndex:i];
if (item == [NSNull null]) {
NSLog(@"%d",i);
}
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息