Objective-C:NSValue类的常见用法
特殊类型的包装类:数组、结构体(OC内部的、自定义的)、指针
//
// main.m
// 05-NSValue
//
// Created by ma c on 15/8/17.
// Copyright (c) 2015年. All rights reserved.
// #import <Foundation/Foundation.h>
typedef struct
{
char *name;
int age;
char gender;
}Student; int main(int argc, const char * argv[])
{
@autoreleasepool
{
//NSValue测试
//1.指针
int num = ;
int *p = #
NSValue *value1 = [NSValue valueWithPointer:p];
int *p2 = (int*)[value1 pointerValue];
NSLog(@"num = %d",*(p2)); //2.数组
int arr[] = {,,,,};
NSValue *value2 = [NSValue valueWithPointer:arr];
int *p3 = (int*)[value2 pointerValue];
for(int i=; i<; i++)
{
NSLog(@"%d",p3[i]);
} //3.Foundation中常用的结构体:NSRange\NSRect\NSSize\NSPoint
NSRange range = NSMakeRange(, );
NSValue *value3 = [NSValue valueWithRange:range];
NSRange range2 = [value3 rangeValue];
NSLog(@"%@",NSStringFromRange(range2)); NSRect rect = NSMakeRect(, , , );
NSValue *value4 = [NSValue valueWithRect:rect];
NSRect rect2 = [value4 rectValue]; NSLog(@"%@",NSStringFromRect(rect2)); //4.自定义的结构体
Student stu = {"Tom",,'M'};
NSValue *value5 = [NSValue valueWithBytes:&stu objCType:@encode(Student)];
NSLog(@"%s",@encode(Student));//输出结构体类型 Student stu2;
[value5 getValue:&stu2];
NSLog(@"name = %s,age = %i,gender = %c",stu2.name,stu2.age,stu2.gender);
}
return ;
}
Objective-C:NSValue类的常见用法的更多相关文章
- Date类的常见用法——JavaSE基础
Date类的常见用法 Date类属于java.util包 因此需要导入Date类 Date() 分配一个Date对象,并初始化此对象为系统当前的日期和时间,可以精确到毫秒). Date(long da ...
- Objective-C:NSString类的常见用法
几种常见的用法为:字符串的创建.字符串的搜索.字符串的比较.字符串的转换 用途一:字符串的创建 void ex1() { //1.常量字符串的对象 NSString *str1 = @"he ...
- java枚举类的常见用法
枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似.不过相比 ...
- Objective-C:NSNumber类的常见用法
NSNumber基本数据类型包装类: // // main.m // 04-NSNumber // // Created by ma c on 15/8/17. // Copyright (c ...
- JAVA中数组Arrays类的常见用法
import java.util.Arrays; int[] array1={7,8,3,2,12,6,5,4}; 1. //克隆clone int[] array2=array1.clone() ...
- C++的string类常见用法
C++的string常见用法,在网上看到一篇,但是不能在c++11编译器下运行,我修改了下,还没改完: #include<iostream> #include<string> ...
- Linux中find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
- Guava中Predicate的常见用法
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
- find常见用法
Linux中find常见用法示例 ·find path -option [ -print ] [ -exec -ok command ] {} \; find命令的参数 ...
随机推荐
- Asp.Net Core2.0允许跨域请求设置
1.services /// <summary> /// /// </summary> /// <param name="services">& ...
- ubuntu 安装 eslint
1. 安装 npm install -g eslint 安装结束后记住 /usr/local/bin/eslint -> /usr/local/lib/node_modules/eslint/b ...
- python opencv入门-形态学转换
目标: 学习不同的形态操作 例如 腐蚀.膨胀.开运算.闭运算 等. 我们要学习的函数有 cv2.erode(),cv2.dilate(),cv2.morphologyEx() 等. 原理 :一般对二值 ...
- Hadoop整理三(Hadoop分布式计算框架MapReduce)
一.概念 MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归约)",是它们的主要思想.它极大 ...
- HP电脑的增霸卡功能操作详解
机房管理中HP电脑的增霸卡功能操作详解 一.软件去除保护 1).电脑开机后等待进入增霸卡选择系统界面: 2).按F1帮助,F10进入增霸卡BIOS界面: 3).光标切换到>>>系统还 ...
- [ 转载 ] Java开发中的23种设计模式详解(转)
Java开发中的23种设计模式详解(转) 设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类 ...
- cbv
- 最短网络Agri-Net
[问题描述] 农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场.当然,他需要你的帮助.约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场. ...
- BZOJ.1032.[JSOI2007]祖码(区间DP)
题目链接 BZOJ 洛谷 AC代码: 区间DP,f[i][j]表示消掉i~j需要的最少珠子数. 先把相邻的相同颜色的珠子合并起来. 枚举方法一样,处理一下端点可以碰撞消除的情况就行. 当然合并会出现问 ...
- Subsets LeetCode总结
Subsets 题目 Given a set of distinct integers, nums, return all possible subsets. Note: The solution s ...