关于NSNumber & NSValue的方法知识简单了解

简单分享下,希望大牛们多多指点迷津,逐步修改,完善不足支持。借鉴之处,还请谅解

#import <Foundation/Foundation.h>

typedef struct{             //C-结构体

int year;

int month;

int day;

}Date;

void text(){

Date mydate;                //定义一个结构体变量

Date date={2016,8,20};

char *[email protected](Date);   //根据结构体类型生成 对应的 类型描述字符串

//void* 代表任何指针。这里要传结构体的地址&date

NSValue *val=[NSValue value:&date withObjCType:type];

//    [val objCType];     //取出类型描述字符串

[val getValue:&mydate];        //取出包装好的结构体

NSLog(@"%i-%i-%i",mydate.year,mydate.month,mydate.day);   //.表示访问成员

}

int main(int argc, const char * argv[]) {

@autoreleasepool {

#pragma mark NSNumber常用方法

//只能包装数字,不能包装结构体,不支持包装的自动解包

NSNumber *num=[NSNumber numberWithInt:10];

//将int类型10 包装给一个NSNumber对象

NSMutableArray *array=[NSMutableArray array];

[array addObject:num];    //添加数值到数组中

NSNumber *num1=[array lastObject];

//取出的还是一个NSNumber对象,不支持自动解包

int number=[num1 intValue];   //将NSNumber转化成int类型

[email protected];        //快速包装数字对象

#pragma mark NSValue常用方法

//包装类,NSValue是NSNumber的父类,可以包装任意值

CGPoint point=CGPointMake(10, 10);

NSValue *value=[NSValue valueWithPoint:point];

//将结构体包装成一个对象

[array addObject:value];    //添加value

NSValue *v1=[array lastObject];

CGPoint p1=[v1 pointValue];  //取出放入的value

BOOL re=CGPointEqualToPoint(point, p1);   //判断比较

NSValue *[email protected]‘a‘;       //快速包装字符,打印出anscii码:97

text();

}

return 0;

}

时间: 05-21

关于NSNumber & NSValue的方法知识简单了解的相关文章

关于NSDictionary的方法知识简单了解

简单分享下,希望大牛们多多指点迷津,逐步修改,完善不足支持.借鉴之处,还请谅解 #pragma mark NSDictionary的初始化 NSDictionary *dict=[NSDictionary dictionaryWithObject:@"v" forKey:@"k1"]; //NSDictionary是不可变的 NSLog(@"%@",dict[@"k1"]);    //[dict objectForKey:@

数值类对象:NSNumber,NSValue,NSNull

基本,集合,复杂,对象 可用对象封装基本数值,然后将对象放入NSArray或NSDictionary 中. 用对象封装基本数值后,即可给其发送消息. 数值类型包括:NSNumber,NSValue,NSNull类. oc不支持自动装箱 NSNumber类 创建方法 + (NSNumber *)numberWithChar:(char)value; + (NSNumber *)numberWithInt:(int)value; + (NSNumber *)numberWithFloat:(floa

解析xml几个方法的简单封装

import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.NodeList; /** * * @author D_xiao * */ public class AnalysisXmlByDom { /** * 功能 :通过dom的方法解析

黑马程序员_ Objective-c 之Foundation之NSNumber ,NSValue, NSDate

Objective-c 之Foundation之NSNumber ,NSValue, NSDate 1.NSNumber具体用法如下: 在Objective-c中有int的数据类型,那为什么还要使用数字对象NSNumber.这是因为很多类(如NSArray)都要求使用对象,而int不是对象.NSNumber就是数字对象,我们可以使用NSNumber对象来创建和初始化不同类型的数字对象. 此外,还可以使用实例方法为先前分配的NSNumber对象设定指定的值,这些都是以initWith开头,比如in

浅析 抽象工厂、工厂方法、简单(静态)工厂

----简单工厂 (也叫静态工厂模式):一个抽象产品抽象出多个具体产品类,一个具体工厂类 代码: //抽象产品角色 public interface Car{ public void drive(); } //具体产品角色 public class Benz implements Car{ public void drive() { System.out.println("Driving Benz "); } } public class Bmw implements Car{ pub

扩展方法从简单应用到深入解析,读这一篇文章就够了

前言(扯淡-_-) 大家好,今天和大家聊聊扩展的事,我将带着大家从简单应用开始深入理解扩展方法的原理,并对扩展方法的使用给出合理的建议. 在实际应用中,当我们在使用某类时发现类中缺少我们想要的方法,最简单直接的就是修改类的源代码来添加我们想要的方法.但事实往往不如人意,总会因为各种因素不可以直接修改源码:拿不到源码.不允许修改,这时候通过继承并扩展的方式来复用是再好不过了,但是如果连最后的继承的权利都剥夺的话(密封类不允许继承)?...这时候就需要用到[扩展方法]了. 扩展方法简介 我们先来看看

IDA 调试 Android 方法及简单的脱壳实现

IDA 调试 Android 方法及简单的脱壳实现 标签: android原创逆向调试dalvik 2016-05-24 14:24 9286人阅读 评论(3) 收藏 举报 分类: 原创(25) Android(5) 学习(9) 逆向(4) 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 本文参考了一些网络文章,对大大们的技术分享表示感谢.小弟刚刚开始深入去搞Android的逆向不久,写一下学习笔记,希望能抛砖引玉,给新手同学们带来方便.文笔比较烂,这不重要,重要的是按自

黑马程序员——Foundation框架常用类(NSNumber/NSValue)

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------ 简介 引入:NSArray.NSSet.NSDictionary这些OC集合都只能存放OC对象,不能存放基本数据类型(int.char.double...).如果我们想将基本数据类型存到这些OC集合中,那么我们将基本数据类型(int.char.double...)包装成OC对象,那么就可以存到OC集合中.NSNumber可以将基本数据类型包装为OC对象. NSValue:用来存储一个C或者OC的

[转] C#基础知识简单梳理

原文: http://www.cnblogs.com/zhouzhou-aspnet/articles/2591596.html 感谢原作者 1.值类型和引用类型 1.1堆和栈 简单的说值类型存放在堆栈上面,引用类型的数据存放在托管堆上面(它的引用地址却存放在堆栈上面)! 栈:它是一个内存数组,是一个先进后出的数据结构! 栈的特征:数据只能从栈顶进,从栈顶出! 堆:它是一个内存区域,可以分配大块区域存储某类型的数据,与栈不同的是它里面的数据可以任意排序和移除! 下面是园子的一张图,贴上来供大家参

JDBC连接数据库的几种方法与简单解析

首先要知道jdbc:使用Java代码发送sql语句的技术就是jdbc技术.即jdbc是一个接口,用于不同的数据库(oracle.mysql.sqlserver..)的操作.使用jdbc发送sql语句的前提: 登录数据库服务器(连接数据库服务器) 数据库的IP地址 端口 数据库用户名 密码 JDBC的URL=协议名+子协议名+数据源名. a 协议名总是"jdbc". b 子协议名由JDBC驱动程序的编写者决定. c 数据源名也可能包含用户与口令等信息:这些信息也可单独提供. 几种常见的数