协议:声明一些必须实现的方法和选择实现的方法,用来声明一些方法,即一个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 ;
}

运行结果:

协议(Protocol)---实例的更多相关文章

  1. iOS阶段学习第19天笔记(协议-Protocol)

    iOS学习(OC语言)知识点整理 一.关于协议(Protocol)的介绍 1)概念:协议指多个对象之间协商的一个接口对象,协议提供了一些方法用在协议的实现者和代理者      之间通讯的一种方式 2) ...

  2. OC基础--分类(category) 和 协议(protocol)

    OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低, ...

  3. 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol

    关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 2014-02-18 19:57 315人阅读 评论(0) 收藏 举报 1.category, ...

  4. Objective-C中的协议(Protocol)和类别(Category)

    1.什么是协议? 2.协议与类别的声明和使用 1.什么是协议? 在Objective-C中,不支持多继承,即不允许一个类有多个父类,但是OC提供了类似的实现方法,也就是协议.协议有点类似于Java里的 ...

  5. 协议 protocol

    协议声明类需要实现的的方法,为不同的类提供公用方法,一个类可以有多个协议,但只能有一个父类,即单继承.它类似java中的接口. 正式协议(formal protocol)--------------- ...

  6. Objective-C:继承、分类(Category、extension)、协议(protocol),个人理解,仅供参考

    总结:继承.分类(Category.extension).协议(protocol)   一.继承: (1)特点: 继承多用于一般父类中的方法功能比较齐全,子类从父类继承过来使用,可以省略很多重复的代码 ...

  7. 协议Protocol

    1.协议:是一组声明方法的集合,不能声明成员变量,作用类似于接口.           遵守此协议的类就相当于拥有了这个协议的所有方法的声明,如果父类遵守了某个协议,子类也遵守了这个协议.       ...

  8. 浅谈iOS开发的协议(protocol)和代理(delegate)

    协议和代理对于一个新手来说确实不讨好理解,也有很多的iOS开发的老手对此是懂非懂的.网上的很多博文只是讲了怎么使用,并没有说的很明白.下面我谈一下我的理解. 1.你要先搞明白,协议和代理为什么会出现, ...

  9. Objective-C 中的协议(@protocol)和接口(@interface)的区别

    Objective-C 中的协议(@protocol),依照我的理解,就是C#, Java, Pascal等语言中的接口(Interface).协议本身不实现任何方法,只是声明方法,使用协议的类必须实 ...

  10. Objective-C:协议protocol

    六.协议(protocol) 关键字:@optional.@required (1)是一个类共享的一个方法列表 (2)它声明了一系列的方法而不进行实现 (3)遵从某个协议,就是需要实现协议中的方法 ( ...

随机推荐

  1. android 隐藏标题栏的方法

    1:单个activity里 onCreate() { super.onCreate(); requestWindowFeature(Window.FEATURE_NO_TITLE); setConte ...

  2. UnWind Segue

    iOS 6 和 Xcode 4.5 中添加了一个新特性叫做“Unwind Segue”. 使用Unwind Segue,可以方便的在Navigation Controller的Controllers之 ...

  3. 再次讲解js中的回收机制是怎么一回事。

    在前几天的一篇闭包文章中我们简单的介绍了一下闭包,但是并没有深入的讲解,因为闭包涉及的知识点比较多,为了能够更好的理解闭包,今天讲解一下关于js中的回收机制. 在初识闭包一文中我说过js中有回收机制这 ...

  4. Android性能优化之运算篇

    下面是运算篇章的学习笔记,部分内容与前面的性能优化典范有重合,欢迎大家一起学习交流! 1)Intro to Compute and Memory Problems Android中的Java代码会需要 ...

  5. html5 自定义数据属性 ,也就是 data-* 自定义属性---笔记。

    html5  自定义数据属性 ,也就是 data-* 自定义属性.  例如 <div data-last-value="43" data-hidden="true& ...

  6. [Python] raw_input

    该函数输入的是字符串,如果想输入数字,可以用强制转换.

  7. T4语法快速入门

    1.什么是T4? T4,即4个T开头的英文字母组合:Text Template Transformation Toolkit.T4(Text Template Transformation Toolk ...

  8. Linq查询操作之投影操作

    投影操作,乍一看不知道在说啥.那么什么是投影操作呢?其实就是Select操作,名字起的怪怪的.和Linq查询表达式中的select操作是一样的.它能够选择数据源中的元素,并指定元素的表现形式.投影操作 ...

  9. 与众不同 windows phone (41) - 8.0 相机和照片: 通过 AudioVideoCaptureDevice 捕获视频和音频

    [源码下载] 与众不同 windows phone (41) - 8.0 相机和照片: 通过 AudioVideoCaptureDevice 捕获视频和音频 作者:webabcd 介绍与众不同 win ...

  10. DoTween小结

    using UnityEngine; using System.Collections; using DG.Tweening; public class GetStart : MonoBehaviou ...