OC中的NSValue

 1     NSvalue把复杂的数据类型(指针、结构体等)存储成对象
 2
 3     struct sct{
 4         int a;
 5         int b;
 6     }sctt={4,5};
 7
 8     NSValue *value=[[NSValue alloc] initWithBytes:&sctt objCType:@encode(struct sct)];
 9
10     NSLog(@"%s",@encode(int));结果是i
11     NSLog(@"%s",@encode(float));结果是f
12     NSLog(@"%s",@encode(long));结果是q
13     NSLog(@"%s",@encode(struct sct));结果是{sct=ii}
14     //同过每一个类型生成的字符串是唯一的
15     if(strcmp(value.objCType, @encode(struct sct))==0{
16         NSLog(@"it is struct sct");
17     }
18
19     //取出结构体数据
20     struct sct newSctt;
21     [value getValue:&newSctt];
22     NSLog(@"%d %d",newSctt.a,newSctt.b);//结果是 4 5
23     [value release];
24
25
26
27     char *p=(char *)0x1f;
28     NSValue *value1=[[NSValue alloc] initWithBytes:&p objCType:@encode(char *)];
29
30     char *q;
31     [value1 getValue:&q];
32     NSLog(@"%p",q);结果是0x1f
33     [value1 release];
34
35
36     CGPoint point;
37     CGsize size;
38     CGRect rect;
39     NSValue *pointValue=[NSValue valueWithPoint:point];
40     NSValue *sizeValue=[NSValue valueWithSize:size];
41     NSvalue *recrValue=[NSValue valueWithRect:rect];
42     NSValue & rangeValue=[NSValue valueWithRange:NSMakeRange(3,4)];
时间: 2024-12-16 22:50:15

OC中的NSValue的相关文章

关于OC中直接打印结构体,点(CGRect,CGSize,CGPoint,UIOffset)等数据类型

关于OC直接打印结构体,点(CGRect,CGSize,CGPoint,UIOffset)等数据类型,我们完全可以把其转换为OC对象来进项打印调试,而不必对结构体中的成员变量进行打印.就好比我们可以使用NSStringFromCGRect(CGRect rect)来直接打印一个结构体,其他打印可以参考以下内容 UIKIT_EXTERN NSString *NSStringFromCGPoint(CGPoint point); UIKIT_EXTERN NSString *NSStringFrom

oc的包装类 NSValue NSNumber

我们都知道oc是面向对象的,但是oc是由c语言扩展而来的,c语言中的int 等类型都不是对象,那么oc 是如何拥有“对象”特征的呢? oc提供了NSValue 和 NSNumber 来封装c语言的基本类型,这样就具有来面向对象的特征了... NSValue是NSNumber的父类. NSValue代表更通用的包装类,可以包装 short int float char 对象id 指针  通过对这些的包装就可以添加到NSArray等集合中了: NSNumber代表更具体的包装类,主要有三个方法:(x

OC中的NSDate日期类和Foundation框架中的结构体相关操作

一:NSDate NSDate可以?用来表?示时间,可以进?行?一些常见的?日期\时间处理 • ?一个NSDate对象就代表?一个时间• [NSDate date]返回的就是当前时间 1)日期对象的格式化操作 // 1,获取当前时间 // NSDate *date = [NSDate date]; // NSLog(@"date = %@", date); // // // 格式化输出时间 //// y : 年 //// // M : 月 //// // d : 日 //// // h

OC中的Values——and——Collections

值和集合 在OC中可以使用C中的基本数据类型. 可以在类的实现里面对这些基本数据类型的属性进行C中的:++ – += -= *=等操作. 如下所示: //---------接口声明----------- @interface XYZPerson : NSObject @property int age; -(void)gettingOlder; @end //----------接口实现----------- @implementation XYZPerson -(void)gettingOld

【学习ios之路:Objective-C】OC中常用的系统排序方法

①.OC中常用排序方法: 1).不可变数组 - (NSArray *)sortedArrayUsingSelector:(SEL)comparator; - (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr; 2)可变数组 - (void)sortUsingSelector:(SEL)comparator; - (void)sortUsingComparator:(NSComparator)cmptr; 3).字典排序 - (NS

关于void*类型的用法(相当于OC中的id类型)

关于void*类型的用法(相当于OC中的id类型) 1.C++语言在对于void* 类型的使用很特别,因为void* 可以间接引用任何其他数据类型的指针,比如int*.float*甚至抽象数据类型的指针,而且可以从void* 强制转换为任何其他数据类型的指针,所以使用起来有时候会比较危险.如果开始将一个void*的指针间接引用一个float*的指针,然后将这个void*指针强制转化为一个int*类型的指针,编译器不会给出错误甚至警告,但是输出的数据却匪夷所思,如果再强制转换会float*则不会出

智能指针 与 oc中的指针

智能指针 与 oc中的指针 智能指针的原理及实现 当类中有指针成员时,一般有两种方式来管理指针成员:一是采用值型的方式管理,每个类对象都保留一份指针指向的对象的拷贝:另一种更优雅的方式是使用智能指针,从而实现指针指向的对象的共享. 智能指针(smart pointer)的一种通用实现技术是使用引用计数(reference count).智能指针类将一个计数器与类指向的对象相关联,引用计数跟踪该类有多少个对象共享同一指针. 每次创建类的新对象时,初始化指针并将引用计数置为1:当对象作为另一对象的副

NS前缀\OC中的注释\访问OC原文件、C原文件中的函数

///////////////////////////////////////// //////////////////////////////////////// NS前缀 NS来自于NeXTStep的一个软件 NeXT Software OC中不支持命名空间(namespace) NS是为了避免命名冲突而给的前缀 看到NS前缀就知道是Cocoa中的系统类的名称 "@"的使用方法 1.@""这个符号表示将C中的字符串转化为OC中的字符串对象 2.@符号 OC中的大

OC中NSFileManager类 和 copy一些用法

一:NSFileManager的使用 1, 概念:用来管理文件系统,它可以用来进行常见的文件\文件夹的操作(拷贝.剪切.创建等) NSFileManager 使用了单例模式singleton 使用defaultManager方法可以获取那个单例对象 2, 1>常见判断 //1,判断文件或文件夹是否存放 // NSFileManager *fileManager = [NSFileManager defaultManager]; // NSString *path = @"/Users/ll