当前位置: 首页 > news >正文

【什么时候使用分类 Objective-C语言】

前言

什么时候使用分类
当1个类的方法很多很杂的时候,当1个类很臃肿的时候,
那么这个时候我们就可以使用分类,将这个类分为多个模块,将功能相似的方法写在同1个模块之中

一、例如,有一个学生类:类中有很多个方法:1.吃、喝、拉、撒、睡;2.学习、敲代码、写书;3.玩Dota、玩LOL、玩CF;4.爬山、跑步、踢足球。。。

1.学生类的方法虽然很多,但是可以分成几个大类:

1.吃、喝、拉、撒、睡。。。基本行为
2.学习、敲代码、写书。。。学习
3.玩Dota、玩LOL、玩CF。。。玩
4.爬山、跑步、踢足球。。。运动2:19

2.于是,我们就可以为学生类写4个分类:

1.基本行为:写在1个分类

2.学习:写在1个分类

3.玩:写在1个分类

4.运动:写在1个分类

3.例如:先写1个本类:Student

#import <Foundation/Foundation.h>
@interface Student:NSObject
@property(nonatomic,strong)NSString *name;
@property(nonatomic,assign)int age;
@property(nonatomic,strong)NSString *stuNumber;
@end

#import “Student.h”
@implementation Student

@end

4.再为Student写1个分类:basic,把吃、喝、拉、撒、睡写在这个分类中

#import “Student.h”
@interface Student (basic)
– (void)eat;
– (void)drink;
– (void)la;
– (void)sa;
– (void)sleep;
@end
#import “Student+basic.h”
@implementation Student (basic)
– (void)eat{}
– (void)drink{}
– (void)la{}
– (void)sa{}
– (void)sleep{}
@end

5.在为Student写1个分类:play,把玩Dota、玩LOL,玩CF写在这个分类里

#import “Student.h”
@interface Student (play)
– (void)playDota;
– (void)playLOL;
– (void)playCF;
@end
#import “Student+play.h”
@implementation Student (play)

  • (void)playDota{}
  • (void)playLOL{}
  • (void)playCF{}
    @end

6.总结,如果1个类的方法很多很杂的时候,可以把相似功能的方法,写在1个分类中。

相关文章:

  • 快速入门C++第七天——输入与输出
  • 栈和队列及表达式求值问题
  • 快速入门C++第六天——函数模板与类模板
  • gitlab自定义头像设置
  • 新库上线 | CnOpenData采矿业工商注册企业基本信息数据
  • 【Redis】基于Redis6的数据类型以及相关命令、应用场景整理
  • Qt使用qBreakpad定位崩溃位置
  • IAR+vscode开发环境搭建,千万别用,当心爱上
  • 一些 Next Generation ABAP Platform 的新语法用例
  • java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(1)
  • vulnhub EMPIRE: BREAKOUT靶机
  • 【Python】PyQt5 Designer工具配置
  • Camera-MTK OpenCamera时序以及耗时
  • SpringCloud链路追踪SkyWalking-第二章-部署搭建及高可用
  • springboot vue3 elementui plus点餐外卖系统源码
  • [case10]使用RSQL实现端到端的动态查询
  • 2017 前端面试准备 - 收藏集 - 掘金
  • Babel配置的不完全指南
  • HTML-表单
  • JavaScript设计模式与开发实践系列之策略模式
  • JS字符串转数字方法总结
  • Laravel 实践之路: 数据库迁移与数据填充
  • Netty 4.1 源代码学习:线程模型
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 基于Android乐音识别(2)
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 突破自己的技术思维
  • 我是如何设计 Upload 上传组件的
  • 无服务器化是企业 IT 架构的未来吗?
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 正则与JS中的正则
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #AngularJS#$sce.trustAsResourceUrl
  • (03)光刻——半导体电路的绘制
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (三)elasticsearch 源码之启动流程分析
  • (转)socket Aio demo
  • (转)winform之ListView
  • .chm格式文件如何阅读
  • .net 4.0发布后不能正常显示图片问题
  • .NET BackgroundWorker
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net解析传过来的xml_DOM4J解析XML文件
  • [ vulhub漏洞复现篇 ] struts2远程代码执行漏洞 S2-005 (CVE-2010-1870)
  • [20161101]rman备份与数据文件变化7.txt
  • [20170705]diff比较执行结果的内容.txt
  • [acm算法学习] 后缀数组SA
  • [BZOJ2208][Jsoi2010]连通数