协议(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 ;
}
运行结果:
协议(Protocol)---实例的更多相关文章
- iOS阶段学习第19天笔记(协议-Protocol)
iOS学习(OC语言)知识点整理 一.关于协议(Protocol)的介绍 1)概念:协议指多个对象之间协商的一个接口对象,协议提供了一些方法用在协议的实现者和代理者 之间通讯的一种方式 2) ...
- OC基础--分类(category) 和 协议(protocol)
OC 中的category分类文件相当于 C#中的部分类:OC 中的protocol协议文件(本质是头文件)相当于 C#中的接口.今天就简单说明一下OC中的这两个文件. 由于视频中的Xcode版本低, ...
- 关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol
关于ios object-c 类别-分类 category 的静态方法与私有变量,协议 protocol 2014-02-18 19:57 315人阅读 评论(0) 收藏 举报 1.category, ...
- Objective-C中的协议(Protocol)和类别(Category)
1.什么是协议? 2.协议与类别的声明和使用 1.什么是协议? 在Objective-C中,不支持多继承,即不允许一个类有多个父类,但是OC提供了类似的实现方法,也就是协议.协议有点类似于Java里的 ...
- 协议 protocol
协议声明类需要实现的的方法,为不同的类提供公用方法,一个类可以有多个协议,但只能有一个父类,即单继承.它类似java中的接口. 正式协议(formal protocol)--------------- ...
- Objective-C:继承、分类(Category、extension)、协议(protocol),个人理解,仅供参考
总结:继承.分类(Category.extension).协议(protocol) 一.继承: (1)特点: 继承多用于一般父类中的方法功能比较齐全,子类从父类继承过来使用,可以省略很多重复的代码 ...
- 协议Protocol
1.协议:是一组声明方法的集合,不能声明成员变量,作用类似于接口. 遵守此协议的类就相当于拥有了这个协议的所有方法的声明,如果父类遵守了某个协议,子类也遵守了这个协议. ...
- 浅谈iOS开发的协议(protocol)和代理(delegate)
协议和代理对于一个新手来说确实不讨好理解,也有很多的iOS开发的老手对此是懂非懂的.网上的很多博文只是讲了怎么使用,并没有说的很明白.下面我谈一下我的理解. 1.你要先搞明白,协议和代理为什么会出现, ...
- Objective-C 中的协议(@protocol)和接口(@interface)的区别
Objective-C 中的协议(@protocol),依照我的理解,就是C#, Java, Pascal等语言中的接口(Interface).协议本身不实现任何方法,只是声明方法,使用协议的类必须实 ...
- Objective-C:协议protocol
六.协议(protocol) 关键字:@optional.@required (1)是一个类共享的一个方法列表 (2)它声明了一系列的方法而不进行实现 (3)遵从某个协议,就是需要实现协议中的方法 ( ...
随机推荐
- HTTP 错误 503.2 - Service Unavailable 正在超过 serverRuntime@appConcurrentRequestLimit 设置的值。
HTTP 错误 503.2 - Service Unavailable 正在超过 serverRuntime@appConcurrentRequestLimit 设置的值. dudu的解决办法:htt ...
- 栈stack的C实现
头文件—————————————————————————— #ifndef _STACK_H_ #define _STACK_H_ #include <stdlib.h> #define ...
- NPM使用详解(下)
NPM使用详解(下) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...
- 利用react native创建一个天气APP
我们将构建一个实列程序:天气App,(你可以在react native 中创建一个天气应用项目),我们将学习使用并结合可定义模板(stylesheets).盒式布局(flexbox).网络通信.用户输 ...
- Tips6:用[HideInInspector]在Inspector中隐藏变量
你曾想要把某些公有变量在Inspetor面板中隐藏起来吗,这样很简单就能做到. 让我们来看以下代码: using UnityEngine; public class HidingScript : Mo ...
- fork()函数详解
原文链接:http://blog.csdn.net/jason314/article/details/5640969 一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函 ...
- 开放产品开发(OPD):开篇
OPD?这是什么玩意?google一下.忘记说了,最近google被封锁的厉害,那就百度一下吧.可惜,OPD找不出是什么.你今天你找不到是正常的,因为之前还没有OPD,而现在才开始有OPD这个东东.相 ...
- Android学习笔记之DocumentBuilder的使用....
PS:当你的才华还撑不起你的野心时,那你需要静下心来学习..... 学习内容: 1.从服务器上获取XML文档... 2.解析XML文档中的内容... XML文件想必大家都非常的熟悉,可扩展的标记语 ...
- 字符串hash - POJ 3461 Oulipo
Oulipo Problem's Link ---------------------------------------------------------------------------- M ...
- 重构第24天 分解复杂的判断(Remove Arrowhead Antipattern)
理解: 当你的代码中有很深的嵌套条件时,花括号就会在代码中形成一个长长的箭头.我们经常在不同的代码中看到这种情况,并且这种情况也会扰乱代码的可读性. 如下代码所示,HasAccess方法里面包含一些嵌 ...