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 WebAPI 使用Swagger生成漂亮的接口文档
1.引用NuGet: Swashbuckle.AspNetCore.Swagger Swashbuckle.AspNetCore.SwaggerGen 或 <PackageReference I ...
- 15:链表中倒数第K个节点
/** * 面试题15:链表中倒数第K个节点 * 输入一个链表,输出该链表中倒数第k个结点. */ public class _15_linked_K { public static void mai ...
- Git配置用户名密码
配置Git 在Linux下和windows下配置Git的方法差不多,只是在Linux下,可以在命令行里直接使用git config进行配置, 而在windows下则要先打开“Git Bash”,进入m ...
- Spark入门1(以WordCount为例讲解flatmap和map之间的区别)
package com.test import org.apache.spark.{SparkConf, SparkContext} object WordCount { def main(args: ...
- Python 中的面向对象和异常处理
在之前我们已经说过了 Python 中内置的主要的几种对象类型,(数,字符串,列表,元组和字典).而面向对象的核心人物还没出场呢 .那么我们常说的对象是什么类型的呢,其实他的类型就是“类”.继承封装和 ...
- PHP 笔记——面向对象编程知识点
类是属性和方法的集合,是面向对象编程方式的核心和基础,通过类可以将零散的用于实现某项功能的代码进行有效管理. 类是由class关键字.类名和成员组成的,类名不区分大小写. 在类中定义常量使用关键字 c ...
- [BZOJ 4809] 相逢是问候
Link: 传送门 Solution: 以前没见过的套路题…… 1.使用EXT欧拉定理降幂的套路: $a^{x}=a^{xmod\phi(P)+\phi(P)} mod P$,且$x\ge P$ 这样 ...
- 异常:The server committed a protocol violation
异常记录: Exception rethrown at [0]: 在 Wintop.Windows.FrmLogin.btnLogin_Click(Object sender, EventArgs e ...
- [JOISC2014]歴史の研究/[BZOJ4241]历史研究
[JOISC2014]歴史の研究/[BZOJ4241]历史研究 题目大意: 一个长度为\(n(n\le10^5)\)的数列\(A(A_i\le10^9)\),定义一个元素对一个区间\([l,r]\)的 ...
- Git 工具的使用,windows平台安装
先谈谈版本控制的一些事 如果你严肃对待编程,就必定会使用"版本控制系统"(Version Control System). 随着信息科技的发展,软件开发已不是小手工作坊,软件的规模 ...