博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
协议与非正式协议
阅读量:4926 次
发布时间:2019-06-11

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

//协议

#import <Foundation/Foundation.h>

//定义一个协议类

@protocol mDelegate <NSObject>

@required

- (void)thisIsADelegateMethodYouMustAchive;

@optional

- (void)thisIsADelegateMethodYouCanNotAchive;

 

@end

@interface Delegate : NSObject

 

@property (nonatomic, retain) id<mDelegate>delegate;

 

- (void)thisIsAMethodToShowHowToUseDelegate;

 

@end

 

#import "Delegate.h"

 

@implementation Delegate

 

- (void)thisIsAMethodToShowHowToUseDelegate

{

    //告诉遵循这项协议的类什么时候实现这个协议中的方法

    [_delegatethisIsADelegateMethodYouMustAchive];

    [_delegatethisIsADelegateMethodYouCanNotAchive];

}

@end

 

/*协议:

 1、协议是多个类共享的一个方法列表。协议中列出的方法在本类中没有相应的实现,由其他遵循了该协议的类来实现

 2、协议不引用任何类它是无类型的(classless)

 3、如果一个类遵循了某项协议,其子类遵循这项协议(但这并不意味着对于该子类,也需要实现协议中的方法)

 4、使用可以使用 conformsToProtocol: 来检测一个方法是否遵循某协议如:

    id test;

    [test conformsToProtocol:@protocol(mDelegate)];

 5、协议名必须唯一

 6、协议中有两个属性@required和@optional

    @required属性的要求遵循协议的类必须要实现这协议列表中的所有方法

    @optional属性则没有这个要求,你可以实现也可以不实现,还可以实现其中的几个方法

 非正式协议:

    非正式协议实际上是一个分类,列出了一组方法但没有实现他们,这组方法的实现由该类的子类去选择实现,

 并且在子类的接口部分需要重新声明这些方法。

 

 在Objective-C 2.0 中用协议的@optional指令取代了非正式协议*/

转载于:https://www.cnblogs.com/chenhaosuibi/p/3440656.html

你可能感兴趣的文章
Codeforces 666E Forensic Examination(广义后缀自动机+线段树合并)
查看>>
Find Minimum in Rotated Sorted Array
查看>>
criteria使用总结
查看>>
四则运算表达式求值 OpenJ_Bailian - 4132
查看>>
office 2007安装出现windows installer服务不能更新一个或多个受保护的windows文件
查看>>
Oracle主表列表上显示从表字段拼成的字符串
查看>>
[转] Android中C&C++源码库的初步研究
查看>>
美团的android多渠道包的3种方法
查看>>
转:集成平台 jira 的使用与方案
查看>>
2016.4.26_下载abap代码【ABAP】
查看>>
uoj#273. 【清华集训2016】你的生命已如风中残烛(组合数学)
查看>>
[LeetCode#56]Merge Intervals
查看>>
Time模块
查看>>
运算符的重载【掌握】
查看>>
.net2.0缓存技术
查看>>
5.2 i++
查看>>
HDOJ 1312题Red and Black
查看>>
《python cookbook中文译本》pdf电子书
查看>>
JQueryMobile开发Cordova时多页应用模式
查看>>
测试的“潜规则”
查看>>