1.声明一个指针,这个指针可以只想任何对象,但是要求只想对象要遵守制定的协议
声明一个指针,遵守study协议的对象,否则给个警告
NSObject<协议名称> *指针名;---(id也是可以的)
这个时候,这个指针就会只想制定对象的任意对象,否则回报一个警告
准守的多个协议的时候, NSObject<SBProtocol,StudyProtocol> *obj4 = [Student new];
只有Student中都实现了<SBProtocol,StudyProtocol>这两个方法的时候才可以,
遵守某个协议的类,就相当于这个类拥有这个协议所定义的行为,因为我们要调用这个对象中的协议方法,只有类准守了协议这个类中一定才有协议方法
如下
#import <Foundation/Foundation.h>
#import "StudyProtocol.h"
#import "Student.h"
#import "SBProtocol.h"
int main(int argc,const char * argv[]) {
NSObject<StudyProtocol> *obj = [Studentnew];
Student *obj1 = [Studentnew];
id<StudyProtocol> id1 = [Studentnew];
NSObject<SBProtocol,StudyProtocol> *obj4 = [Student new];
return0;
}
6.@required @optional 专门修饰协议中的方法的,
在协议当中,方法的声明,被@required修饰,那么就准守这个协议的类,必须实现这个方法,否则就会发出警告
被@optional修饰,那么准守这个协议的类,可以实现这个方法,也可以不实现这个方法,不实现编译器也不会报警告。
唯一的区别,就是当遵守协议的类,而不实现协议中的方法的时候,@required会给一个警告,@optional不会又警告的
这两个关键字的主要擢用,在于程序猿的沟通,告诉准守协议的类,那些方法必须实现的,因为这个会调用,默认情况下是@required
有关协议的基本使用------链接-------点击打开链接