[code=objc]
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
// _______________NSNumber___________
//可以用来包装基本数据类型
// NSArray *array = @[1,2]; 只能存放对象
/**
* 包装基本数据类型的方法
*/
//_________________装箱______________
//包装整型
NSNumber *number1 = [NSNumber numberWithInteger:1];
NSNumber *number2 = [NSNumber numberWithInteger:2];
NSArray *array = @[number1,number2];
// number1 + number2 错误
// [NSNumber numberWithLong:<#(long)#>];
//包装字符型
NSNumber *charNum = [NSNumber numberWithChar:'a'];
//包装bool类型
NSNumber *boolNum = [NSNumber numberWithBool:YES];
//包装double类型
NSNumber *doubleNum = [NSNumber numberWithDouble:1.8];
//_______________拆箱_______________________
NSInteger a = [number1 integerValue];
char b = [charNum charValue];
BOOL c = [boolNum boolValue];
double d = [doubleNum doubleValue];
//___________________新语法____________________
NSArray *arr = @[@1,@2,@3];
NSNumber *num = @1;
NSNumber *num1 = @YES;
NSNumber *num2 = @1.9;
NSInteger e = 7;
//变量需要加上小括号
NSNumber *num3 = @(e);
// @1 相当于 [NSNumber numberWithInteger:1]
//___________________NSValue_______________________
// NSValue 是 NSNumber的父类,可以包装结构体,指针
//_____________OC提供的结构体的包装_______________
NSRange range = {1,3}; //表示范围
//将结构体包装为对象 装箱
NSValue *value = [NSValue valueWithRange:range];
//拆箱
NSRange range1 =[value rangeValue];
//NSSize,表示尺寸
NSSize size = {100,200};
// [NSValue valueWithSize:size];
//______________自定义结构体的包装__________
struct Person {
int age;
float height;
};
struct Person p = {17,1.7};
//装箱,将自定义的结构体包装为对象
NSValue *personValue = [NSValue value:&p withObjCType:@encode(struct Person)];
//拆箱
struct Person p1;
[personValue getValue:&p1];
NSLog(@"%d,%f",p1.age,p1.height);
// ___________________NSNull(空)__________________
//集合中不能存储nil
// NSArray *array = @[@1,nil,@2];
//创建了一个NSNull对象,表示空
NSNull *n = [NSNull null];
NSArray *arr1 = @[@1,n,@2];
NSLog(@"%@",arr1);
return 0;
}
[/code]