OC语言类的深入和分类

article/2025/8/28 17:57:46

OC语言类的深入和分类

一、分类

(一)分类的基本知识 

概念:Category  分类是OC特有的语言,依赖于类。

分类的作用:在不改变原来的类内容的基础上,为类增加一些方法。

添加一个分类:

文件结构图:

 

在分类中添加一个方法

 

Study方法的实现

 

测试程序:

 

(二)分类的使用注意

(1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量

(2)在分类方法的实现中可以访问原来类中的成员变量;

(3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警告);

(4)方法调用的优先级:分类->原来的类->父类,若包含有多个分类,则最后参与编译的分类优先;

(5)在很多的情况下,往往是给系统自带的类添加分类,如NSObjectNSString,因为有的时候,系统类可能并不能满足我们的要求。

(6)在大规模的应用中,通常把相应的功能写成一个分类,可以有无限个分类,对原有类进行扩充,一般分模块写,一个模块一个分类。

 

(三)分类编程练习

(1)给NSString类增加一个类方法,计算某个字符串对象中阿拉伯数字的个数;

(2)给NSString类增加一个对象方法,计算当前字符串对象中阿拉伯数字的个数;

分类中方法的声明

 

分类中方法的实现

 

测试程序:

 

 

二、类的深入研究

(一)类的本质

类本身也是一个对象,是class类型的对象,简称“类对象”。

Class类型的定义:

Typedef struct obj class *class;

类名就代表着类对象,每个类只有一个类对象。

利用class 创建 Person

利用Person 创建Person类型的对象

Person *p=[[Person alloc] init];

 

获取内存中的类对象有两种方法:

(1)class c=[p claa];//指向类的对象的指针调用class方法

(2)Class c1=[Person class];//使用类名调用class方法

注意:cc1打印出来的地址相同,class c2=[p claa];可以证明所有的对象共用一个类方法。

(二)类的加载和初始化

 

测试程序:

 

1.当程序启动时,就会加载项目中所有的类和分类,而且加载后会调用每个类和分类的+load方法,只会调用一次;

2.当第一次使用某个类时,就会调用当前类的+initialize方法;

3.先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法,最后调用分类的+load方法),先初始化父类,再初始化子类(先调用父类的+initialize方法,再调用子类的+initialize方法)。

4.注意:在初始化的时候,如果在分类中重写了+initialize方法,则会覆盖掉父类的。

5.重写+initialize方法可以监听类的使用情况。



http://chatgpt.dhexx.cn/article/3JQwaskD.shtml

相关文章

OC 基础入门

OC 基础入门 OC 源文件 OC 源文件为 .h 和 .m( m表示 message,表示 OC 中的消息机制 ) 在 .m 文件中可以写 OC 代码、C 代码、C 代码。反正 Java 的 .class 文件不能写 C 和 C 。 NS 前缀 从之前的 OC 的历史中知道 OC 来自 NextStep. 所以许多的 OC 的类都是带了 NS 前缀…

OC语言学习记录

目录 一、主要的OC的基本类型介绍 二、IOS属性 1、什么是属性 2、属性修饰符 A、读写性修饰符 B、原子性修饰符 C、assgin和weak D、strong和copy E、retain 三、iOS内存管理 1、什么是内存管理? 2、内存是怎么分配的,是分配在哪里的&#x…

OC语言--OC语言基础、类

一、OC语言基础 1>OC文件的扩展名为.m、.c; 2>OC语言完全兼容C语言,即OC语言中可以写C语言; 3>OC语言也可以写C语言,但是如果要写C语言,则OC文件扩展名为.mm; 4>OC语言是在C语言的基础上增加了最小层的面…

OC语言特性

一、分类 1.1做了那些事?(关键词:明私、分解、私公开化) 声明私有方法,分类头文件放到数组文件.m中,不对外暴露 分解体积庞大的类文件 功能复杂的按功能分类 framework私有方法公开化 1.2特点 &#x…

下载各版本cuda,下载以前版本的cuda

1.打开网址https://developer.nvidia.com/cuda-toolkit-archive 2.下载10.1版本就点击CUDA Toolkit 10.1 3.如图选择自己的版本。 4.打开这个网址就可下载。 5.cd到下载目录,执行sudo sh 文件名 指令 6.移动到continue按enter键确认 7.回复accept 8.不安装驱动 9.安…

Windows下显卡支持的cuda及配套GPU版本pytorch下载全流程(2022.03.27)

Windows下显卡支持的cuda及配套GPU版本pytorch下载全流程(2022.03.27) 一、更新电脑显卡驱动(以mx150为例) 1、打开英伟达驱动下载官网:https://www.nvidia.cn/geforce/drivers/ 2、直接下载自动更新程序&#xff0c…

NVIDIA CUDA和cuDNN显卡历代版本下载地址

NVIDIA显卡计算能力一览表 https://developer.nvidia.com/cuda-gpus Halcon图像库支持深度学习,GPU计算能力要求3.0以上 深度学习必备 先安装N卡的显卡驱动--->再安装cuda-->最后安装cuDNN 显卡驱动 1、NVIDIA官方 https://www.nvidia.cn/Download/index…

Windows 下载与安装CUDA和Pytorch【安装教程、深度学习】

参考链接:Windows 下安装 CUDA 和 Pytorch 跑深度学习 - 动手学深度学习v2_哔哩哔哩_bilibili 0.准备工作 请确保你是NVIDIA的显卡(不能是AMD、集成显卡) 1.下载CUDA 打开developer.nvidia.com/cuda-downloads,打开有点慢 选择…

CUDA下载,以及下载GPU版本的pytorch

一、下载anaconda 因为这步我之前就下好了,主要参考这个链接:史上最全最详细的Anaconda安装教程 二、下载CUDA 1.首先观察自己需要什么版本的CUDA,以及是否安装过CUDA 先cmd,输入命令 nvidia-smi结果如下,所以我们…

[cuda]cuda驱动版本对应+旧版本cuda下载网址

一、背景 本文用于记录在安装cuda时可能需要的网址,留作己用。 二、cuda、nvidia驱动版本对应关系 1. cuda需要的最低驱动版本 2. cuda与对应的驱动版本 三、旧版本cuda下载网址 所有版本的cuda下载地址如下: cuda Toolkit Archive.

下载和安装CUDA和Cudnn(图文详解)

Pytorch环境需要用到CUDA,所以我们要安装CUDA的驱动。这里我安装的是CUDA10.0,对应的Cudnn是7.4.1。 一、下载 CUDA10.0的官网地址,选择好自己所需版本,这里是我推荐的选择,然后点击Download。 cudnn官网地址&#x…

cuda 10.1 下载

最近发现百度到的关于CUDA10.1版本的安装的文章,给的链接已经是10.2版本的了。想找个10.1版本的有点艰难,不过其实官网有历史版本的下载入口的 进入这个地址https://developer.nvidia.com/cuda-toolkit-archive,可以下载旧版本的CUDA 不想去官…

cuda官网下载,本机显卡驱动与cuda、cudnn、pytorch、torchvision安装版本对应表,以及完全卸载CUDA方法

注:如果执行第一步没有找到nvidia-smi指令,重装本机NVIDIA驱动(Linux, Windows 标题中各项版本对应) 重装NVIDIA驱动,选择自己的显卡产品系列和产品编号, 如下图 GeForce RTX 30系列,产品是3080 Ti,系统windows 10 64…

CUDA的下载安装

大家好,下面将进行CUDA的下载安装,下载安装的详细步骤描述如下: (1)CUDA下载 https://download.csdn.net/download/qq_41104871/87462747 (2)CUDA安装 1、首先,需要解压缩下载好的CUDA压缩包,CUDA压缩包如下图所示: 2、解压后,将会获得如下图所示的.exe文件:…

cuda 各个版本下载

目录 cuda各个版本下载: cudnn会列出来对应cuda版本 需要登录,点击更多登录方式,微信登录也可以。 2022.08.10来看,网站还是有效的; cuda各个版本下载: https://developer.nvidia.com/cuda-toolkit-arc…

Cuda11.6 下载与安装[排坑版]

2022年7月份买了一台惠普光影7的笔记本,自带了Win11系统和Cuda 11.6。之前运行在Cuda10上的tensorflow代码在运行过程中调用cuda就会报错。cuda11.6是预装的,还很难替换。重装Win10系统还把电脑干崩了。无奈花钱重装成了原来的系统,下面讲一下…

Windows下载安装cuda10.1详细步骤

第一步:去百度上搜索cuda10.1 第二步:点击Windows,x86_64,10,exe(local),然后点击Download[2.4G],即可下载 第三步:安装过程 (1)双击: &#xff…

系统结构图:最大扇入、扇出数,深度和宽度的区别

1、最大扇入扇出数 最大扇出数,即模块直接调用的下层模块数目,可以看一个模块向下辐射出去的第一层的模块数。 同理,最大扇入数,即模块被直接调用的上层模块最大数目,可以看一个模块向上辐射出去的第一层的模块数。 2、…