OC语言 集合>>封装与拆包

来源:互联网 发布:unity 2d rpg 源码 编辑:程序博客网 时间:2024/06/01 09:57

封装与拆包


//

//  main.m

//  Kiwir-OC04-01

//

//  Created by ibokan on 15/12/11.

//  Copyright © 2015谭其伟. All rights reserved.

//


#import <Foundation/Foundation.h>


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

    @autoreleasepool {

        

        

        //封装

        

        

  /*

   OC中封装、拆包基本数据类型

   Foundation框架下的基础类

   NSValue / NSNumber

   

   功能:将OC C 当中的基本数据类型转换成实例对象,即将'值类型'转换成'引用类型'

   

   */

        

   //OC中常用的数据类型,第一种数据类型

        int a = 5;

        float b = 5.0;

        double c = 5.5;

        char d = 'a';

        bool flag = YES;

        

        

        //第一种赋值方式

//        CGPoint point = {3,4};

//        CGSize s0ize = {5,6};

//        CGRect rect = {point,size};

        

        //NSRange包含了两个成员,location以及 length . location表示起始位置,以0开始;length表示长度。

//        NSRange range = {10,3};

        

        

        //第二种赋值方式

        CGPoint point = CGPointMake(3, 4);

        CGSize size = CGSizeMake(5, 6);

        CGRect rect = CGRectMake(3, 4, 5, 6);  //代表一个矩形的位置

        

        NSRange range = NSMakeRange(10, 3);

        NSEdgeInsets edgeInsets = NSEdgeInsetsMake(10, 10, 10, 10);

        

        

        //NSValue 以及 NSNumber

        //NSValue NSNumber 的父类

        //其中 NSValue可以将 CGPoint,CGSize,CGRect,NSRange,NSEdgeInsets转换成对象

        

        //声明一个对象 *pointVa

        NSValue *pointVa = [NSValuevalueWithPoint:point]; //point类型封装成对象

        

        NSLog(@"%@",pointVa);        //以对象形式输出

        

        

        NSValue *sizeVa = [NSValuevalueWithSize:size];

        NSValue *rectVa = [NSValuevalueWithRect:rect];

        NSValue *rangeVa = [NSValuevalueWithRange:range];

        NSValue *edgeInsetsVa = [NSValuevalueWithEdgeInsets:edgeInsets];

        

//        NSValue *sizeVa1 =@5;6;

//        NSValue *rectVa1 =@3;4;

//        NSLog(@"sizeVa1 = %@,rectVa1 = %@",sizeVa1,rectVa1);

        //这样输出只能输出第一个字母,可能不能用新语法吧????

        

        

        

        //其中NSNumber可以将 'int','float','double','char','bool'C中基本数据类型转换成对象

        

        //封装:

        NSNumber *intNumber = [NSNumbernumberWithInt:a];   //后面填刚才声明的变量a;

        NSNumber *floatNumber = [NSNumbernumberWithFloat:b];

        NSNumber *doubleNumber = [NSNumbernumberWithDouble:c];

        NSNumber *charNumber = [NSNumbernumberWithChar:d];

        NSNumber *boolNumber = [NSNumbernumberWithBool:flag];

        NSLog(@"charNumber = %@",charNumber);

        //新语法

        NSNumber *intNumber1 = @5;

        NSNumber *boolNumber1 =@YES;

        NSNumber *floatNumber1 =@5.5;

        NSNumber *doubleNumber1 =@5.2;

        NSNumber *charNumber1 =@'d';    //????

        NSLog(@"boolNumber1 = %@,charNumber1 = %@,intNumber1 = %@",boolNumber1,charNumber1,intNumber1);

        


        

        // 我们将C OC 中的基本数据类型(值类型)转换成对象(引用类型)的过程叫做封装。相对应的也有一个将对象转变成基本数据类型,此过程叫做拆包。

        

        

             //拆包

        

        

        //拆包

        int a1 = [intNumber intValue];

        float b1 = [floatNumber floatValue];

        double c1 = [doubleNumber doubleValue];

        char d1 = [charNumber charValue];

        bool flag1 = [boolNumber boolValue];

        

        CGPoint point1 = [pointVa pointValue];    //声明一个变量point1 pointVa这个对象

        CGSize size1 = [sizeVa sizeValue];

        CGRect rect1 = [rectVa rectValue];

        NSRange range1 = [rangeVa rangeValue];

        NSEdgeInsets edgeInsets1 = [edgeInsetsVaedgeInsetsValue];

        

     

        

        

        

        

        

    }

    return 0;

}





输出结果


2015-12-15 20:25:11.880 Kiwir-OC04-01[37633:304863] NSPoint: {3, 4}2015-12-15 20:25:11.882 Kiwir-OC04-01[37633:304863] charNumber = 972015-12-15 20:25:11.882 Kiwir-OC04-01[37633:304863] boolNumber1 = 1,charNumber1 = 100,intNumber1 = 5Program ended with exit code: 0




0 0
原创粉丝点击