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

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操