首页 菜鸟问答正文

协议(Protocol)---实例

piaodoo 菜鸟问答 2021-02-03 22:40:41 475 0 菜鸟知道
 协议(Protocol)---实例

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


 

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

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 0;
}

 运行结果:

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/13209.html

社交距离(socialdistance)

  • 表距离还在用distance吗?其实你还有其他选择

    表距离还在用distance吗?其实你还有其他选择

  • △5日,海南三亚,核酸检测有序开展。

  • 全国疫情今天(8月6日)最新消息通报:昨日本土新增310+275,其中海南262+46

  • 北京疫情地图分布图实时更新(查询入口)

    北京疫情地图分布图实时更新(查询入口)

  • 搜索

    文章专栏

    最近发表

    标签列表