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

相关文章

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁

ModelMapper基本使用和常见场景示例详解

《ModelMapper基本使用和常见场景示例详解》ModelMapper是Java对象映射库,支持自动映射、自定义规则、集合转换及高级配置(如匹配策略、转换器),可集成SpringBoot,减少样板... 目录1. 添加依赖2. 基本用法示例:简单对象映射3. 自定义映射规则4. 集合映射5. 高级配置匹

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函

Java 继承和多态的作用及好处

《Java继承和多态的作用及好处》文章讲解Java继承与多态的概念、语法及应用,继承通过extends复用父类成员,减少冗余;多态实现方法重写与向上转型,提升灵活性与代码复用性,动态绑定降低圈复杂度... 目录1. 继承1.1 什么是继承1.2 继承的作用和好处1.3 继承的语法1.4 子类访问父类里面的成

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

如何使用Maven创建web目录结构

《如何使用Maven创建web目录结构》:本文主要介绍如何使用Maven创建web目录结构的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录创建web工程第一步第二步第三步第四步第五步第六步第七步总结创建web工程第一步js通过Maven骨架创pytho

Python循环结构全面解析

《Python循环结构全面解析》循环中的代码会执行特定的次数,或者是执行到特定条件成立时结束循环,或者是针对某一集合中的所有项目都执行一次,这篇文章给大家介绍Python循环结构解析,感兴趣的朋友跟随... 目录for-in循环while循环循环控制语句break语句continue语句else子句嵌套的循

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-