1、协议用到的情况:某个类有一个实例方法,这个实例方法对所传过来的对象,限制其必须实现了某个特定的方法,而对传过来的对象类型没有限制。
2、格式
协议名:@protocol 协议名 协议名命名一般:类名+Delegate。
协议内容:特定的某方法
具体举例:
①
Aa类中得实例方法是具有协议限制的。
Bb类是一个普通类。
②
Aa.h中:
//协议写法
@protocol AaDelegate <NSObject>
//协议内容
-(void)play;
@end
@interface Aa : NSObject
//传染的对象 遵守协议
-(void)playWithObject:(id<AaDelegate>)anyobject;
@end
Aa.m中写好带协议的实例方法
-(void)playWithObject:(id<AaDelegate>)anyobject{
[anyobject play];
}
③
当在ViewController中引入Aa Bb 类。
分别创建对象。Aa 类对象,调用实例方法把Bb类对象传入时报警告:要求Bb 类对象必须遵守Aa 类中实例方法的协议。
需要在Bb类的Bb.h:
引入协议所在类
#import "Aa.h"
让Bb类遵守协议:
@interface Bb : NSObject<AaDelegate>
在Bb.h中实现协议内容。
时间: 2024-09-27 20:15:13