Objective-C:NSValue类的常见用法

简介:

特殊类型的包装类:数组、结构体(OC内部的、自定义的)、指针

复制代码
 1 //
 2 //  main.m
 3 //  05-NSValue
 4 //
 5 //  Created by ma c on 15/8/17.
 6 //  Copyright (c) 2015年. All rights reserved.
 7 //
 8 
 9 #import <Foundation/Foundation.h>
10 typedef struct
11 {
12     char *name;
13     int age;
14     char gender;
15 }Student;
16 
17 int main(int argc, const char * argv[])
18 {
19     @autoreleasepool
20     {
21         //NSValue测试
22         //1.指针
23         int num = 10;
24         int *p = &num;
25         NSValue *value1 = [NSValue valueWithPointer:p];
26         int *p2 = (int*)[value1 pointerValue];
27         NSLog(@"num = %d",*(p2));
28         
29         //2.数组
30         int arr[5] = {1,2,3,4,5};
31         NSValue *value2 = [NSValue valueWithPointer:arr];
32         int *p3 = (int*)[value2 pointerValue];
33         for(int i=0; i<5; i++)
34         {
35             NSLog(@"%d",p3[i]);
36         }
37         
38         //3.Foundation中常用的结构体:NSRange\NSRect\NSSize\NSPoint
39         NSRange range = NSMakeRange(0, 5);
40         NSValue *value3 = [NSValue valueWithRange:range];
41         NSRange range2 = [value3 rangeValue];
42         NSLog(@"%@",NSStringFromRange(range2));
43         
44         NSRect rect = NSMakeRect(0, 0, 100, 100);
45         NSValue *value4 = [NSValue valueWithRect:rect];
46         NSRect rect2 = [value4 rectValue];
47         
48         NSLog(@"%@",NSStringFromRect(rect2));
49         
50         
51         //4.自定义的结构体
52         Student stu = {"Tom",20,'M'};
53         NSValue *value5 = [NSValue valueWithBytes:&stu objCType:@encode(Student)];
54         NSLog(@"%s",@encode(Student));//输出结构体类型
55         
56         Student stu2;
57         [value5 getValue:&stu2];
58         NSLog(@"name = %s,age = %i,gender = %c",stu2.name,stu2.age,stu2.gender);
59     }
60     return 0;
61 }
复制代码

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!


本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4737485.html,如需转载请自行联系原作者
目录
相关文章
|
C语言 iOS开发
Objective-C中NSArray类的解读
Objective-C中NSArray类的解读
218 0
|
Java iOS开发 C语言
Objective-C与Java类的一些区别
Objective-C与Java类的一些区别 OC类和C一样,需要有声明和定义,先上一段OC代码 #import /* * 声明一个People类,继承NSObject *...
876 0
|
iOS开发 编译器 数据安全/隐私保护
[精通Objective-C]类,接口,协议与扩展
[精通Objective-C]类,接口,协议与扩展 参考书籍:《精通Objective-C》【美】 Keith Lee 目录 精通Objective-C类接口协议与扩展 目录 类 类的接口 类的实现 实例变量 属性 方法 协议 分类 扩展 类 创建一个类名为Atom,继承于NSObject的类。Atom类由两个文件组成,Atom.h和
2062 0
|
iOS开发 开发者
Objective - C 面向对象高级特性 - 包装类 | 类处理 | 类别 | 扩展 | 协议 | 委托 | 异常处理 | 反射
http://blog.csdn.net/shulianghan/article/details/48876843 这个漂亮的文字阴影,搞不到啊,求指教 一. Objective-C 对象简单处理 1. 包装类 (1) 包装类简介 NSValue 和 NSNumber : 
2079 0