OC学习:OC_中基本数据类型和结构体的封装(NSNumber继承与NSValue)

2024-03-12 01:48

本文主要是介绍OC学习:OC_中基本数据类型和结构体的封装(NSNumber继承与NSValue),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        在OC中NSArray (数组)、NSDictionary(字典)和NSSet(集合)它们存放的都是对象类型,要想把基本数据类型和结构体类型存放到NSArray、NSDictionary或NSSet中就需要对它们进行封装。

        //基本数据类型等

        int a= 5;
        float b = 4.56;
        double c =34.234;
        char d = 'c';
        long e = 233;
        BOOL f = YES;
        NSInteger r = 132;
        //结构体类型
        CGPoint point = CGPointMake(2, 3);
        CGRect rect= CGRectMake(0, 0, 34, 5);
        CGSize size = CGSizeMake(4, 4);
        NSRange range= NSMakeRange(5, 5);
        NSEdgeInsets edgeInsets = NSEdgeInsetsMake(1, 1, 5, 5);
       
        //封装, NSValue 是 NSNumber 的父类
        //NSValue可以讲结构体转化成对象,NSNumber可以将基本数据类型转化成对象,这些过程叫做封装。
        NSNumber *aNumber = [NSNumber numberWithInt:a];
        NSNumber *bNumber = [NSNumber numberWithFloat:b];
        NSNumber *cNumber = [NSNumber numberWithDouble:c];
        NSNumber *dNUmber = [NSNumber numberWithChar:d];
        NSNumber *eNumber = [NSNumber numberWithLong:e];
        NSNumber *fNumber = [NSNumber numberWithBool:f];
        NSNumber *rNumber = [NSNumber numberWithInteger:r];
        
        NSValue *pointValue = [NSValue valueWithPoint:point];
        NSValue *rectValue = [NSValue valueWithRect:rect];
        NSValue *rangeValue = [NSValue valueWithRange:range];
        NSValue *sizeValue = [NSValue valueWithSize:size];
        NSValue *edgeInsetsValue = [NSValue valueWithEdgeInsets:edgeInsets];
        
        //将对象转变成基本数据类型,这叫拆包
        int a1= [aNumber intValue];
        BOOL f1 = [fNumber boolValue];
        NSInteger r1 = [rNumber integerValue];
        
        CGPoint point1 = [pointValue pointValue];
        CGRect rect1 = [rectValue rectValue];
        NSRange range1 = [rangeValue rangeValue];
        
        //将nil封装
        id nullValue = [NSNull null];

这篇关于OC学习:OC_中基本数据类型和结构体的封装(NSNumber继承与NSValue)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799764

相关文章

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

使用Python进行文件读写操作的基本方法

《使用Python进行文件读写操作的基本方法》今天的内容来介绍Python中进行文件读写操作的方法,这在学习Python时是必不可少的技术点,希望可以帮助到正在学习python的小伙伴,以下是Pyth... 目录一、文件读取:二、文件写入:三、文件追加:四、文件读写的二进制模式:五、使用 json 模块读写

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

基本知识点

1、c++的输入加上ios::sync_with_stdio(false);  等价于 c的输入,读取速度会加快(但是在字符串的题里面和容易出现问题) 2、lower_bound()和upper_bound() iterator lower_bound( const key_type &key ): 返回一个迭代器,指向键值>= key的第一个元素。 iterator upper_bou