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;
}