码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-05-11 09:03:01      阅读:131      评论:0      收藏:0      [点我收藏+]

标签: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的数据,可以包装基本数据类型(int、double。。),也可以包装结构体(CGPoint、CGSize、CGRect)。。

NSNumber:继承于NSValue,通常用来存储C语言中的基本数据类型(int、double。。)。

NSNumber/NSValue

1.数字对象与基本数据类型的转换

//1.int <-> NSNumber
int a = 10;
NSNumber *numA = [NSNumber numberWithInt:a];
int tempA = numA.intValue;

//2.double <-> NSNumber
double b = 20.5f;
NSNumber *numB = [NSNumber numberWithDouble:b];
double tempB = numB.doubleValue;

//3.char <-> NSNumber
char ch = 'A';
//NSNumber *numCh = @(ch);
NSNumber *numCh = [NSNumber numberWithChar:ch];
char tempCh = numCh.charValue;
NSLog(@"%c",tempCh);

//4.NSString <-> NSNumber
char *str = "string";
NSNumber *numStr = [NSNumber numberWithChar:str];
char *tempStr = numStr.charValue;

//5.编译器特性
/*@1 == [NSNumber numberWithInt:1];
 *@"string" == [NSNumber numberWithInt:"string"];
 *int a = 10;
 *@(a) == [NSNumber numberWithInt:a];
 */

2.数字对象的基本运用

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //1.结构体  <-> NSValue
        CGPoint a = {1,2};
        NSValue *vaA = [NSValue valueWithPoint:a];
        CGPoint tempA = vaA.pointValue;
        
        //将CGPoint包装成OC对象,从而可以存入OC集合中
        NSMutableSet *set = [NSMutableSet set];
        [set addObject:vaA];
        //将double类型包装成NSNumber对象,可以存入集合中
        [set addObject:@10.5];
        
        [set enumerateObjectsUsingBlock:
         ^(id obj, BOOL *stop) {
             NSLog(@"%@",obj);
        }];
        
        
    }
    return 0;
}
结果输出:
2015-05-10 22:47:41.018 09-NSNumber基本使用[896:38347] NSPoint: {1, 2}
2015-05-10 22:47:41.019 09-NSNumber基本使用[896:38347] 10.5



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

标签:nsnumber   nsvalue   

原文地址:http://blog.csdn.net/h302849781/article/details/45625347

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!