博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Objective-C 协议 简介 +委托的实现
阅读量:6328 次
发布时间:2019-06-22

本文共 1255 字,大约阅读时间需要 4 分钟。

hot3.png

1.1定义协议:

创建一个.h文件

 
1: _MyProtocolName.h
2: @protocol MyProtocolName 
 
3: @end

注:协议中没有变量;

<NSObject>是代表在此声明的协议是NSObject协议的衍生协议(不是NSObject类);

1.2使用协议:

 
1: @interface CustomView:UIView

代表CustomView遵循我们制定的这个协议,需要实现协议的方法

1.3用协议修饰变量:

如果这样定义一个变量:

 
1:   id
myNewVariable;

那么myNewVaiable是遵循我们制定的这个MyProtocolName协议的

 

如果定义函数时:

 
1: - (void) doSomethingWithThisObject: (id
) aObject

那么这个函数的参数是需要遵循我们制定的这个MyProtocolName协议的

 

============接下来看下如何利用协议实现委托=========

目的:将A的事情委托给B来做

 步骤1.在A中声明协议,即要委托出去的事情(方法)。
 步骤2.A中声明一个委托对象,即要委托给谁去办,用id<协议名字>委托对象名;
 步骤3.比如想让B做A的事情,那么B的interface中要宣布自己遵循A中制定的那个协议。
 步骤4.A调用委托执行那件事情去.即[delegate fun]

A.h------------------------------------------------

Mydelegate//协议的声明

-(void)Fun;

 

A:NSObject

{

   id<Mydelegate> delegate;//声明一个委托对象,我们要把事情委托给实现Mydelegate协议的类

}

@property(assign,nonatomic) id<Mydelegate> delegate;

A.m---------------------------------------------

@implementation

-(void)init

{

    delegate = B;

}

-(void)FunToOther

{

    [delegate Fun];//将消息发送给委托去处理

}

 

委托对象的实现

B.h---------------------------------------------

#import"A.h"

B:NSObject<MyDelegate>

B.m---------------------------------------------

@implementation

-(void)fun

{

    //实现Mydelegate中制定的方法

}

这样的话A就可以委托B去做fun这件事情了。

转载于:https://my.oschina.net/u/728866/blog/93172

你可能感兴趣的文章
互联网生态建设落地五大挑战——保险科技生态建设 ...
查看>>
进行短视频app开发工作时,可以加入它来保护青少年 ...
查看>>
Rxjs 学习推荐
查看>>
25G DAC无源高速线缆和25G光模块之间的区别
查看>>
乐乐茶完成近2亿元Pre-A轮融资,祥峰投资领投
查看>>
clickhouse修改时区
查看>>
CSS_定位
查看>>
第二十四章:页面导航(六)
查看>>
百度、长沙加码自动驾驶,湖南阿波罗智行科技公司成立 ...
查看>>
Java面试笔试题大汇总一(最全+详细答案)
查看>>
10 个 Linux 中方便的 Bash 别名
查看>>
[Server] 服务器配置SSH登录邮件通知
查看>>
程序员需要学数学吗?
查看>>
排序算法
查看>>
全新 DOCKER PALS 计划上线,带给您不一样的参会体验! ...
查看>>
如何用纯 CSS 创作一只愤怒小鸟中的黑炮
查看>>
胡玮炜卸任摩拜CEO,或将成为美团大裁员的开端
查看>>
Java多线程用法解析
查看>>
sed & awk LastState 中的疑问
查看>>
Linux执行mount挂载覆盖文件的还原
查看>>