iOS分类和扩展的区别

分类:在不改变原有类的基础上,为原有类添加方法。不可定义属性,只能定义getter和setter方法。

作用:一般用来为系统的类扩展方法或者把某个复杂的类的按照功能拆到不同的文件里。

NSString+PhoneNumber.h
#import <Foundation/Foundation.h>@interface NSString (phoneNumber)- (NSString *)phoneNumber;@endNSString+PhoneNumber.m@implemention NSString (phoneNumber)- (NSString *)phoneNumber
{if (self.length == 11 && [self hasPrefix:@"1"]) {return [@"+86" stringByAppendingString:self];}return self;
}
@end

扩展:也叫做匿名分类,为原有类添加私有变量和方法。

作用:一般用扩展来声明私有属性,或者把.h的只读属性重写成可读写的。

UITestManager.h@interface UITestManager: NSObject@property(nonatomic, assign) BOOL isIUest;@endUITestManager.m@interface UITestManager() @property(nonatomic, assign) BOOL testKey;@end@implementation UITestManager- (void)setup() {
}@end

分类和扩展的区别

1.分类是在运行时把分类信息合并到类信息中,而扩展是在编译时,就把信息合并到类中。

2.分类声明的属性,只有生成getter/setter的声明,不会自动生成成员变量和getter/setter的实现,而扩展会。

3.分类不可以为类添加实例变量而扩展可以。

4.分类可以为类添加方法的实现而扩展只能声明方法,不能实现。

分类的局限性:

1.无法为类添加添加实例变量,但可以通过关联对象实现。

2.分类的方法若和类中原本的实现重名,会覆盖原本方法的实现。(非真正意义上的覆盖)

3.多个分类的方法重名,会调用最后编译的那个分类的实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820711.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智慧公厕系统厂家,打造创新性智慧公厕的窍门

智慧公厕系统是利用物联网、大数据、云计算、网络通信、自动化控制等技术&#xff0c;监测公厕内部多个方面的变化&#xff0c;从而实现公厕的智能化管理。通过智慧公厕云管理平台&#xff0c;可以实现厕位空余智能引导、环境监测、资源消耗监测、安全防范管理等多种功能&#…

刷代码随想录有感(33):滑动窗口滑行途中框内最大值

又是需要死记硬背理解的题目。 题干如下: 代码&#xff1a; class Solution { private:class MyQueue{deque<int> que;public:void pop(int value){if(!que.empty() && value que.front()){que.pop_front();}}void push(int value){while(!que.empty() &&…

CRMEB多商户商城系统,不止B2B2C

CRMEB多商户商城系统&#xff0c;是将多个商家汇聚到一个平台上开店&#xff0c;就像常见的京东、淘宝等。这个平台上一般包含4种不同角色&#xff0c;即平台运营管理方、入驻商家、供应商、消费者。 因为平台角色的多元化&#xff0c;多商户商城系统也具有联营、自营、招商、…

没想到打脸这么快,AI程序员已经出发了!

大家好啊&#xff0c;我是豆小匠。 先介绍一下本期的主角&#xff1a;Devin&#xff0c;世界上第一位AI程序员&#xff0c;由2023年11月成立的10人初创公司Cognition AI开发。 1. AI程序员已经能做到什么程度 3月13日&#xff0c;Cognition AI公司在X平台&#xff08;原推特&…

完整 ascii 码:eascii

完整 ascii 码 0-31 &#xff1a;不可打印字符32-127&#xff1a; 可打印字符128-255&#xff1a;扩展字符 ASCII&#xff08;American Standard Code for Information Interchange&#xff0c;美国信息交换标准代码&#xff09;是基于拉丁字母的一套电脑字符编码标准&#xff…

基于SSM大健康老年公寓管理系统设计与实现【Java毕业设计·安装调试·代码讲解·文档报告】

&#x1f34a;作者&#xff1a;北友舰长 &#x1f34a;简介&#xff1a;从事毕业论文代写&#xff0c;计算机毕业设计定制&#xff0c;Java程序开发&#xff0c;可定制化项目、 项目源码、代码讲解、文档撰写、ppt制作等等 &#x1f345; 文末获取源码联系 &#x1f447;&#…

打造属于你的体育直播平台:使用东莞梦幻网络源码缺点和优点

随着互联网的快速发展&#xff0c;体育直播平台已经成为了人们获取体育赛事信息和互动交流的重要渠道。为了快速搭建这样一个平台&#xff0c;许多企业和个人选择使用现成的源码&#xff0c;其中东莞梦幻网络科技提供的体育直播源码备受关注。然而&#xff0c;在选择使用该源码…

智慧公厕的“智慧”

现代社会快节奏的生活方式&#xff0c;使得公共厕所成为城市中不可或缺的基础设施。如何提供一个舒适、整洁、安全、便捷的公共卫生空间&#xff0c;成为城市管理者面临的重要问题。而智慧公厕的出现&#xff0c;为解决这一问题带来了新的解决方案。 智慧公厕以其先进的技术和…

Pytest精通指南(14)Parametrize之indirect(间接参数)

文章目录 官方概念概念分析官方示例示例分析验证indirect为True但不指定fixture验证indirect为True但不存在fixture 官方概念 概念分析 在pytest的pytest.mark.parametrize装饰器中&#xff0c;indirect参数用于指示是否应该从fixtures中解析参数值&#xff0c;而不是直接使用提…

react17 + antd4 如何实现Card组件与左侧内容对齐并撑满高度

在使用antd进行页面布局时&#xff0c;经常会遇到需要将内容区域进行左右分栏&#xff0c;并在右侧区域内放置一个或多个Card组件的情况。然而&#xff0c;有时我们会发现右侧的Card组件并不能与左侧的栏目对齐&#xff0c;尤其是当左侧栏目高度动态变化时。本文将介绍如何使用…

LeetCode-924. 尽量减少恶意软件的传播【深度优先搜索 广度优先搜索 并查集 图 哈希表】

LeetCode-924. 尽量减少恶意软件的传播【深度优先搜索 广度优先搜索 并查集 图 哈希表】 题目描述&#xff1a;解题思路一&#xff1a;解题思路二&#xff1a;0解题思路三&#xff1a;0 题目描述&#xff1a; 给出了一个由 n 个节点组成的网络&#xff0c;用 n n 个邻接矩阵图…

IDEA 本地库引入了依赖但编译时找不到

在使用 IDEA 开发 Maven 项目的过程中&#xff0c;有时会遇到本地库引入了依赖&#xff0c;但编译时报找不到这个依赖&#xff0c;可以使用命令处理。 打开 Terminal。 执行清理命令。 mvn clean install -Dmaven.test.skiptrue执行更新命令。 mvn -U idea:idea

比肩世界一流的车企,长安汽车的这些做法也太超前了!

2023年12月&#xff0c;法大大发布了中国首部《汽车行业合同数智化白皮书》&#xff08;点击阅读及下载&#xff1a;中国首部&#xff01;《汽车行业合同数智化白皮书》重磅发布 | 附下载&#xff09;。该白皮书基于法大大自身参与汽车行业合同数智化建设的实践和思考&#xff…

volatile

volatile&#xff1a; 用来声明变量的关键字之一&#xff0c;它的主要作用是确保多个线程能够正确地处理共享变量。在多线程编程中&#xff0c;如果一个变量被多个线程共享并且这些线程可能同时修改该变量的值&#xff0c;那么就需要使用 volatile 关键字来保证线程之间对该变量…

算法打卡day35

今日任务&#xff1a; 1&#xff09;343. 整数拆分 2&#xff09;96.不同的二叉搜索树 3&#xff09;复习day11 343. 整数拆分 题目链接&#xff1a;343. 整数拆分 - 力扣&#xff08;LeetCode&#xff09; 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xf…

【kafka】安装

也是第二次安装&#xff0c;蛮记录一下 1.安装kafka之前需要先完成zookeeper的安装 【zookeeper】安装 2. Apache Kafka官网下载 3. 解压完成后修改server.properties配置文件 修改日志文件存放路径 查看与zookeeper连接的端口是否和zookeeper服务所在的端口一致 &#xf…

Transformer的Decoder的输入输出都是什么

目录 1 疑问&#xff1a;Transformer的Decoder的输入输出都是什么 2 推理时Transformer的Decoder的输入输出 2.1 推理过程中的Decoder输入输出 2.2 整体右移一位 3 训练时Decoder的输入 参考文献&#xff1a; 1 疑问&#xff1a;Transformer的Decoder的输入输出都是什么 …

小型燃气站3D可视化:打造安全高效的燃气新时代

随着科技的不断进步&#xff0c;越来越多的行业开始融入3D可视化技术&#xff0c;燃气行业也不例外。 小型燃气站作为城市燃气供应的重要节点&#xff0c;其安全性和运行效率至关重要。传统的燃气站管理方式往往依赖于人工巡检和纸质记录&#xff0c;这种方式不仅效率低下&…

【数据结构】树与二叉树、树与森林部分习题以及算法设计例题 2

目录 【数据结构】树与二叉树、树与森林部分习题以及算法设计例题一、交换二叉树每个结点的左右孩子Swap 函数&#xff08;先序遍历&#xff09;&#xff1a;Swap 函数&#xff08;中序遍历&#xff09; 不可行&#xff1a;Swap 函数&#xff08;后序遍历&#xff09;&#xff…

授权协议OAuth 2.0之JWT

写在前面 本文看下JWT相关内容。 1&#xff1a;为什么需要JWT OAuth2.0规范中并没有规定access_token使用什么样的格式&#xff0c;只要求满足&#xff0c;不连续性&#xff0c;不可猜测性&#xff0c;不可重复性就可以了&#xff0c;所以我们在生成accest_token的时候就比较…