[好程序员训练营]Objective-C学习笔记---基本数据结构NSValue

  <A href="http://www.gooodprogrammer.org/" target="blank">ios培训</A>------我的OC语言笔记,期待与您交流!

  NSValue是NSNumber的父类,NSNumber用于将基本数据类型int、char、float等存储成对象,NSValue则可以用于将装指针和结构体等更加复杂的类型存储为对象。因此他们的使用上还是有一定的区别。

 1    struct sct{                   //声明一个结构体
 2         int a;
 3         float b;
 4     };
 5     struct sct sctt={2,6.55f};      //定义一个结构体变量sctt并赋值
 6
 7
 8     NSValue * value = [[NSValue alloc] initWithBytes:&sctt objCType:@encode(struct sct)];
 9     //将结构体sctt存储为对象,&sctt是取结构体的地址,@encode(struct sct)是将结构体类型转为字符串
10
11     struct sct newsctt;    //新定义一个结构体变量
12
13     [value getValue:&newsctt];     //对象value执行方法将sctt结构体的值赋给newsctt
14
15     NSLog(@"%d,%f",newsctt.a,newsctt.b);  //将结构体newsctt中的值打印出来

在上面的代码中,@encode(struct sct)是将数据的类型转换成字符串,比如说int型就转为i,float转为f。上面只是给出了NSValue的一种使用方法,下面看看其他的

 1
 2   NSValue * value1 = [NSValue valueWithBytes:&sctt objCType:@encode(struct sct)];  //上面的可以用这种方式替代
 3
 4     NSValue * value2 = [NSValue valueWithPoint:<#(NSPoint)#>];
 5
 6     NSValue * value3 = [NSValue valueWithPointer:<#(const void *)#>];
 7
 8     NSValue * value4 = [NSValue valueWithRange:<#(NSRange)#>];
 9
10     NSValue * value5 = [NSValue valueWithRect:<#(NSRect)#>];
11
12      NSValue * value6 = [NSValue valueWithPointer:<#(const void *)#>];

这里也只是列举了一部分的常用存储类型。

时间: 2024-08-25 17:13:15

[好程序员训练营]Objective-C学习笔记---基本数据结构NSValue的相关文章

[好程序员训练营]Objective-C学习笔记---点语法

<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的OC语言笔记,期待与您交流! 在java等面向对象的语言中,常常会用到obj.方法,或者用到obj.属性来调用对象的方法和属性.OC为了使使用其他语言的程序设计者更好学习OC,所以OC也引入了点语法,但是从根本上讲,OC的点语法和java等语言的点语法还是有一定区别的,下面我们就来看看怎么使用OC的

[好程序员训练营]Objective-C学习笔记---构造函数和析构函数

<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的OC语言笔记,期待与您交流! 简单的讲,构造函数就是在创建一个对象的时候起到初始化的作用,对这个对象里的一些成员变量进行初始化,析构函数就是在对象被删除进行一些清理工作,也就是专门的扫尾工作,下面用代码来进行具体说明. 一.初始化函数 在OC中凡是已init开头的函数我们都称之为初始化函数,在声明初

[好程序员训练营]Objective-C学习笔记--基本数据结构NSArray

<A href="http://www.goodprogrammer.org/" target="blank">ios培训</A>------我的OC语言笔记,期待与您交流! 前言:NSArray是OC中的数组类,用NSArray可以创建一个不可变数组对象,而他的子类NSMutableArray则可以用来创建可变数组对象.下面分别介绍二者的部分用法. NSArray 1 NSArray * array = [[NSArray alloc] i

黑马程序员_JAVA UDP网络编程学习笔记

一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的,它们构成了两个端点之间的虚拟通信链路.与TCP通信不同,UDP是面向无连接的.不可靠的基于数据包的传输协议.即应用进程(或程序)在使用UDP协议之前,不必先建立连接.自然,发送数据结束时也没有连接需要释放.因此,减少了开销和发送数据之前的延时.UDP也采用端口来区分进程. 在java中,java.

JAVA程序员养成计划之JVM学习笔记(2)-垃圾收集管理

本文对JVM垃圾收集进行说明,包括三种不同算法(标记复制.标记清除.标记整理),以及七种不同的垃圾收集器(Serial,ParNew,Serial Scavenge, CMS, Serial Old, Parallel Old, G1) 持续更新中- - 1. 垃圾回收相关概念 1.1. 垃圾回收对象 说到垃圾收集,首先得确定哪些是可回收的对象,这里涉及到java的四种引用方式,即强.软.弱.虚四类引用. 强引用:即普遍存在的对对象的引用,如指向通过new创建的对象 软引用:即程序运行非必须的对

JAVA程序员养成计划之JVM学习笔记(3)-JVM性能监控

本文对JVM的性能监控方法做整理. 持续更新中- - 1. JDK命令行工具 1.1. jps:虚拟机进程状况工具 JVM Process Status Tool, 显示系统内所有的HotSpot虚拟机进程,用于查看当前在jvm中运行的程序,包括虚拟机执行主类的名称以及进程ID. 1.2. jstat:虚拟机统计信息监视工具 JVM Statistics Monitoring Tool, 用于收集Hotspot虚拟机各方面的运行数据,包括类装载.内存.垃圾收集.JIT编译等运行数据. 1.3.

《程序员修炼之道》读书笔记

<程序员修炼之道>读书笔记 提供多种选择,不要找接口 出了问题后,要提出各种解决方案的选择,而不是找借口:不要说事情做不到,要说明接下来做什么来挽回局面: 不要容忍破窗户 我们看到过整洁.运行良好的系统,一旦窗户开始破裂,就相当迅速的恶化: 不要留着破窗户不修:发现一个bug就修复一个,如果没有足够的时间进行恰当的修理,就用木板先订起来:或许你可以先把代码注释起来,或是显示"未实现"的消息:采取某种行动防止进一步的损坏,并说明情形在你的控制之下: 投资知识资产 我们喜欢把程

黑马程序员_第一天视频学习

一.      计算机和软件常识 1.      计算机运行原理 1)          硬件基本组成:硬盘.内存.CPU 2)          各个部件之间的运作协调(下图) 2.      计算机只能识别0和1 1)          0和1组成的指令 2)          0和1组成的数据 3.      计算机和软件的联系 1)          软件的基本概念:指令的集合 2)          软件的安装运行过程 3)          为什么要开发软件:写出能控制计算机的指令

《程序员修炼之道》读书笔记②

概述 花了几天时间看完了程序员修炼之道,有很多感悟,记录于此,供自己开发时参考,相信对其他人也有用. 值得一提的是,这本书写的非常好,很多大牛在走了很多弯路之后再读这本书都很感慨没有早些读. <程序员修炼之道>读书笔记① 弯曲,或折断 解耦与得墨忒耳法则 1.函数的得墨忒耳法则规定,某个对象的任何方法都应该只调用属于以下情形的方法:它自身:传入该方法的任何参数:它创建的任何对象:任何直接持有的组件对象. 2.委托服从得墨忒耳法则,从而减少了耦合. 元程序设计 1.元数据是关于数据的数据:要用元