AI智能
改变未来

蓝懿IOS基本数据类型和结构体的封装

还可以使用字面量语法来创建NSNumber对象:

NSNumber *number = @‘X’;//字符型

NSNumber *number = @12.3;//双浮点型

NSNumber *number = @11111ll;//long long

NSNumber *number = @YES;//布尔值

那么,如何从NSNumber对象出把基本数据类型重新取出来呢?可以使用下面的NSNumber对象方法:

-(char) charValue;

-(int) intValue;

-(BOOL) boolValue;

如果一个基本数据类型在封装前是浮点型,也可以将它以整形的方式取出,NSNumber会对数据进行适当的转换。


2、NSValue可以封装任意数据类型,我们通常使用NSValue来封装结构体,如下方法可以创建NSValue对象:

+(NSValue *) valueWithBytes:(const void *)value objCType:(const char *)type;

第一个参数是要封装的值的地址,可以用&取变量地址;

第二个参数是一个用于描述该数据类型的字符串,可以将数据类型的名字传入@encode()编译器指令,它就会返回合适的字符串。

那么,接下来就是如何从NSValue中取出被封装的结构体:

-(void)getValue:(void *)buffer;

参数表示的是这个结构体的值取出来后要放的地址。

除去上面介绍的普遍的用法,cocoa还提供了将常用的结构体转换为NSValue对象的快捷方式:

+(NSValue *)valueWithPoint:(NSPoint )aPoint;

+(NSValue *)valueWithSize:(NSSize) aSize;

+(NSValue *)valueWithRect:(NSRect) rect;

对应的unboxing方法:

-(NSPoint)pointValue;

-(NSSize)sizeValue;

-(NSRect)rectValue;

分享到:   阅读(0)评论(0)编辑删除

  • 点赞
  • 收藏
  • 分享
  • 文章举报

ly199121发布了6 篇原创文章 · 获赞 0 · 访问量 89私信关注

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 蓝懿IOS基本数据类型和结构体的封装