协议(Protocol)---实例

协议:声明一些必须实现的方法和选择实现的方法,用来声明一些方法,即一个Protocol是由一系列的方法声明组成的。


建立协议文件步骤:将鼠标放到文件列表处,利用快捷键 command +N 健,得到如图

协议(Protocol)---实例协议(Protocol)---实例协议(Protocol)---实例

lamcoProtocol.h 文件

#import <Foundation/Foundation.h>

@protocol lamcoProtocol <NSObject>
@required // 必须实现的方法
-(void)study; @optional // 可实现哥不实现的方法
-(void)work; @end

lamcoProtocol.h 文件

#import <Foundation/Foundation.h>

@protocol bankProtocol <NSObject>
-(void)giveme;
@end

Student.h文件

#import <Foundation/Foundation.h>
#import "lamcoProtocol.h"
#import "bankProtocol.h"
@interface Student : NSObject<lamcoProtocol,bankProtocol> @end

Student.m 文件

#import "Student.h"

@implementation Student

-(void)study
{
NSLog(@"每天按时上课,复习,预习!");
} -(void)work
{
NSLog(@"保证给你安排一个技术岗位");
} -(void)giveme
{
NSLog(@"每月按时还款");
} @end

OtherStudent.h文件

#import <Foundation/Foundation.h>

@interface OtherStudent : NSObject

@end

OtherStudent.m 文件

#import "OtherStudent.h"

@implementation OtherStudent

@end

main.m文件

#import <Foundation/Foundation.h>
#import "Student.h"
#import "OtherStudent.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Student *stu=[Student new];
// 判断是否有蓝科协议
if ([stu conformsToProtocol:@protocol(lamcoProtocol)]) {
// 判断协议是否有该方法
if ([stu respondsToSelector:@selector(study)]) {
[stu study];
[stu work];
}else{
NSLog(@"找不到好工作");
}
}
else{
NSLog(@"没有参加培训");
} if ([stu conformsToProtocol:@protocol(bankProtocol)]) {
if ([stu respondsToSelector:@selector(giveme)]) {
[stu giveme];
}
else{
NSLog(@"没有信誉可言");
}
}else{
NSLog(@"不能参加iOS培训");
} OtherStudent *other=[OtherStudent new];
if ([other conformsToProtocol:@protocol(lamcoProtocol)]){
if ([other respondsToSelector:@selector(study)]) {
NSLog(@"欢迎来到蓝科");
}
else{
NSLog(@"不愿参加培训");
}
}
}
return ;
}

运行结果:

协议(Protocol)---实例

上一篇:比较时间的大小


下一篇:简易计算器