Commander.m中实现委托与类别协议扩展
在iOS开发中,委托(Delegation)是一种设计模式,用于将任务委派给对象,让它们之间形成一种责任转移的关系。在Objective-C中,命令者(Commander)类与委托(Delegate)的关系体现得尤为明显。在给定的`Commander.m`代码片段中,关键知识点如下: 1. 委托概念: - 委托是通过对象间协议(Protocol)进行的,这是一种定义接口的方式,使得类能够委派特定的任务给其他对象处理。在这种情况下,`Commander`类需要知道是否有代理(delegate)来接收和执行其`fire`方法。 2. 类别(Category)的使用: - 类别允许我们扩展现有类的功能而无需修改原有类。这里创建了一个名为`Men`的类,并添加了一个类别`Men(menAdd)`。这个类别新增了一个`-(void)speak`方法,用于演示如何在不修改原类的情况下扩展功能。 3. 类别与协议的关系: - 在`Men(menAdd)`类别中,`-(void)speak`方法遵循了一个未明确定义的协议,虽然没有明确展示,但可以推断协议中定义了`fireInTheHole`这样的方法,这是`[self.delegate fireInTheHole]`调用的基础。 4. 类别覆盖原方法: - 如果`Men`类本身已经有了`speak`方法,那么类别中的`speak`方法将会覆盖它,这体现了类别的动态性,可以用来提供不同的实现或重载行为。 5. 单例实现方式: - 类别还可以用于实现单例模式,如在`NSObject(menAdd)`的例子中,即使类本身没有`speak`方法,通过这种方式也可以给整个`NSObject`类添加统一的行为。 6. 方法声明和实现分离: - 类别允许我们将方法声明放在一个`.h`文件中,然后在多个`.m`文件中分别实现,这有助于代码组织和模块化。 7. 使用场景: - 委托通常用于事件处理(如用户交互)、数据绑定、回调等场景,通过委托,各个组件之间可以保持松耦合,提高代码的可维护性和灵活性。 在iOS编程中,理解并灵活运用委托、类别和协议是至关重要的,它们能帮助开发者实现代码结构的优化,提升代码的复用性和可扩展性。
![xlsx](https://img-home.csdnimg.cn/images/20210720083732.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![](https://profile-avatar.csdnimg.cn/72793aa3e23f4e05b5b484275f6e326f_weixin_42186387.jpg!1)
- 粉丝: 38
- 资源: 2万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- Vue实现iOS原生Picker组件:详细解析与实现思路
- Arduino蓝牙小车:参数调试与功能控制
- 百度Java面试精华:200页精选资源涵盖核心知识点
- Swift使用CoreData填坑指南:CoreData在Swift 3.0的变化
- 微距离无线充电器创新设计及其实验探索
- MTK Android平台开发全攻略:44步详解流程
- RecyclerView全面解析:替代ListView的新选择
- Android开发:自动适配中英文键盘解决方案
- Android调用WebService接口教程
- Android开发:BitmapUtil图片处理全解析与实例
- Android多线程断点续传实现详解
- PCA算法在人脸识别会议签到系统中的应用
- EventBus 3.0:Android事件总线详解与实战应用
- Android FileUtil:全面解析文件操作实用技巧与实例
- RecyclerView添加头部和尾部实战教程
- Android实现微博滑动固定顶部栏实战与优化
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)