黑马程序员技术交流社区
标题:
NSValue包装C结构体
[打印本页]
作者:
明天过后1
时间:
2014-10-9 22:18
标题:
NSValue包装C结构体
大家都应该知道NSValue可以包装CGPoint,CGSize等结构体,对于普通结构体可以这样包装,我猜想系统也是用类似的方法包装
// 默认开启ARC
#import <Foundation/Foundation.h>
typedef struct{
int age;
char *name;
} Student;
int main(int argc, const char * argv[]) {
@autoreleasepool {
Student s;
s.age = 22;
s.name = "mike";
// 包装结构体
/*
[NSValue value:<#(const void *)#> withObjCType:<#(const char *)#>]
参数1 : 目标结构体地址
参数2 : 结构体的类型,它必须使用编译器的@endcode指令来创建
@encode(结构体类型,但不能使用C语言字符串作为硬编码作为参数)
*/
NSValue *value = [NSValue valueWithBytes:&s objCType:@encode(Student)];
Student temp;
[value getValue:&temp];
NSLog(@"name is %s ,age is %d",temp.name,temp.age); // name is mike ,age is 22
}
return 0;
}
复制代码
作者:
易孟飞
时间:
2014-10-9 22:53
这用的指针的强制转换
作者:
明天过后1
时间:
2014-10-9 23:04
易孟飞 发表于 2014-10-9 22:53
这用的指针的强制转换
哥们很好学啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2