OC中NSValue和NSNumber基本用法
2015-12-25 21:17
459 查看
#import <Foundation/Foundation.h> typedef struct{ //字符串是一个数据类型,NSString是一个类,name是NSString得一个对象,在普通的数据类型里面不可以包含对象 // NSString *name; char name[20]; NSInteger age; char sex; CGFloat score; }Student; int main(int argc, const char * argv[]) { @autoreleasepool { /* 数值类:NSNumber/NSValue 功能:NSNumber:将普通数据类型转换成OC对象 */ #pragma mark - 将普通数据类型转换为NSNumber类对象 //将普通数据类型转换为NSNumber类对象 NSNumber *initNumber1 = @25; NSLog(@"initNumber1 = %@", initNumber1); NSNumber *initNumber2 = [NSNumber numberWithBool:65]; NSLog(@"initNumber2 = %@", initNumber2); NSNumber *initNumber3 = [[NSNumber alloc] initWithChar:'A']; NSLog(@"initNumber3 = %@", initNumber3); CGFloat test1 = 5.6; NSNumber *initNumber4 = [NSNumber numberWithFloat:test1]; NSLog(@"initNumber4 = %@", initNumber4); #pragma mark -将NSNumber类对象转换成普通数据了类型 //将NSNumber类对象转换成NSInteger数据类型 NSInteger number1 = [initNumber1 integerValue]; NSLog(@"number1 = %ld",number1); //将NSNumber类对象转换成BOOL数据类型 BOOL number2 = initNumber2.boolValue; NSLog(@"number2 = %d", number2); /* 数值类:NSValue 功能:完成结构体和对象类型的互转 */ #pragma mark - 将结构体转换成NSValue对象 //将系统的结构体变量转换成NSValue对象 NSRange testRange = {5,6}; NSValue *initValue1 = [NSValue valueWithRange:testRange]; NSLog(@"initValue2 = %@", initValue1); //将自定义结构体变量转换成NSValue对象 Student stu = {"zhangsan", 25, 'm', 98.5}; NSValue *initValue2 = [NSValue valueWithBytes:&stu objCType:@encode(Student)]; NSLog(@"initValue2 = %@", initValue2); Student stu1 = {"lishi", 26, 'm', 88.6}; NSValue *initValue3 = [[NSValue alloc] initWithBytes:&stu1 objCType:@encode(Student)]; //一般将结构体转换成对象是为了存储,在直接输出转换得到的对象的时候,由于没有重写NSValue里面的description所以输出是乱码 NSLog(@"initValue3 = %@", initValue3); #pragma mark - 将NSValue类对象转换成数据结构 NSRange testRange2; [initValue1 getValue:&testRange]; NSLog(@"testRange2.location = %ld, testRange2.length = %ld",testRange2.location, testRange2.length); Student stu2; [initValue2 getValue:&stu2]; NSLog(@"stu2.name:%s, stu2.age:%ld, stu2.sex:%c, stu2.score:%.2f", stu2.name, stu2.age, stu2.sex, stu2.score); NSLog(@"Hello, World!"); } return 0; }
相关文章推荐
- [gstreamer][001] Seek issues and so on
- UITextView之坑
- Xcode7.2:用UIScrollView实现应用新特性(欢迎页)
- requestWindowFeature(Window.FEATURE_NO_TITLE)无效果或者崩溃
- UITabBarController实现
- Java多线程总结之线程安全队列Queue
- tasklet && workqueue && kernel timer
- UIImagePickerController调用相机和录制视频
- 深入理解Message, MessageQueue, Handler和Looper
- Android性能优化之Systrace分析UI性能
- selenuim2模拟鼠标键盘操作
- iOS UI-常用控件
- IOS UI-Button按钮
- OC UIFont字体设置
- Loadrunner中参数化实战(8)-Unique+Each occurrence
- Loadrunner中参数化实战(9)-Unique+Once
- NSOperationQueue应用
- iOS UI设计: SnapKit 或者 Masonry 时候 与StoryBoard混合时候IB报错冲突
- Android Studio finished with non-zero exit value 1
- Loadrunner中参数化实战(7)-Unique+Each iteration