Protocol(协议)(二十)

Protocol(协议)

Protocol在iOS中常见,协议是一套标准,类似于一个单子,上面写有一些要去完成的事,就看谁去签这个协议,如果谁签协议,那么它就要实现(完成)协议上要求完成的东西。

创建Protocol,command+N,选择objective-c file,然后file中写协议名字,file type选择protocol。即可生成一个.h文件。

所有的协议在这个.h文件中声明即可。

协议的声明,以@protocol开始,以@end结束,里边放一些需要实现的方法,这些方法,用@required(必须实现)和@optional(可实现,可不用实现)来修饰。

@protocol 协议名字 <NSObject>,NSObject放在<>号内,则不再是类,而是协议。

一个例子:

MyProtocol.h(写协议)


#import <Foundation/Foundation.h>

//声明协议

@protocol MyProtocol <NSObject>//放在<>里的NSObject已经不是一个类,而是一个协议

@required//要求必须的。必须实现

- (void)eating;

- (void)drinking;

@optional//可选。可选实现

- (void)shopping;

@end

Student.h(签协议)


#import <Foundation/Foundation.h>

#import "MyProtocol.h"//引入协议

@interface Student : NSObject<MyProtocol>//签协议

@end

Student.m(实现协议内容)


#import "Student.h"

@implementation Student

- (void)eating{

}

- (void)drinking{

}

- (void)shopping{

}

@end

main.m执行协议


#import <Foundation/Foundation.h>

#import "Student.h"

int main(int argc, const char * argv[]) {

@autoreleasepool {

Student *s1 = [[Student alloc]init];

[s1 eating];

[s1 drinking];

[s1 shopping];

}

return 0;

}

时间: 2024-10-11 07:18:12

Protocol(协议)(二十)的相关文章

马哥学习笔记二十五——ISCSI协议,架构及其安装配置

ISCSI监听在tcp/3260端口 iSCSI Target:iscsi-target-utils 客户端认正方式: 1.基于IP 2.基于用户,CHAP tgtadm:命令行工具,模式化命令 --mode 常用模式:target,logicalunit,account target --op new.delete.show.update.bind.unbind logicalunit --op new.delete account --op new.delete.bind.unbind --

iOS开发之oc(十四)--protocol协议(1)

protocol:协议 想要拥有某些方法声明通过: // : 继承父类 // <> 遵守协议 协议:就是用来声明方法的,想要拥有某些方法声明,只需要遵守协议. 1.协议的定义 @protocol 协议名称 <NSObject> // 方法声明列表.... @end // 定义了一个名叫MyProtocol的协议 @protocol MyProtocol <NSObject> // @required 要求实现,不实现就会发出警告(默认是这个) // @optional

第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装

第三百二十三节,web爬虫,scrapy模块以及相关依赖模块安装 当前环境python3.5 ,windows10系统 Linux系统安装 在线安装,会自动安装scrapy模块以及相关依赖模块 pip install Scrapy 手动源码安装,比较麻烦要自己手动安装scrapy模块以及依赖模块 安装以下模块 1.lxml-3.8.0.tar.gz (XML处理库) 2.Twisted-17.5.0.tar.bz2 (用Python编写的异步网络框架) 3.Scrapy-1.4.0.tar.gz

iOS开发-Protocol协议及委托代理(Delegate)传值

前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替.Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法.也就是说,它只告诉你要做什么,但具体怎么做,它不关心. 当 一个类要使用某一个Protocol(协议)时,都必须要遵守协议.比如有些必要实现的方法,你没有去实现,那么编译器就会报警告,来提醒你没有遵守×× 协议.注意,我这里说的是警告,而不是错误.对的,就算你不实现那些“必要实现”的方法,程序也是能运行的,只不过多了些警告. 我会

实验二十四:SD卡模块

  驱动SD卡是件容易让人抓狂的事情,驱动SD卡好比SDRAM执行页读写,SD卡虽然不及SDRAM的麻烦要求(时序参数),但是驱动过程却有猥琐操作.除此此外,描述语言只要稍微比较一下C语言,描述语言一定会泪流满面,因为嵌套循环,嵌套判断,或者嵌套函数等都是它的痛.. 史莱姆模块是多模块建模的通病,意指结构能力非常脆弱的模块,暴力的嵌套行为往往会击垮模块的美丽身躯,好让脆弱结构更加脆弱还有惨不忍睹,最终搞垮模块的表达能力.描述语言预想驾驭SD卡,关键的地方就是如何提升模块的结构能力.简单而言,描述

马哥学习笔记二十四——分布式复制快设备drbd

DRBD: 主从 primary: 可执行读.写操作 secondary: 文件系统不能挂载 DRBD: dual primay, 双主(基于集群文件系统的高可用集群) 磁盘调度器:合并读请求,合并写请求: Procotol:drbd数据同步协议 A: Async, 异步  数据发送到本机tcp/ip协议栈 B:semi sync, 半同步  数据发送到对方tcp/ip协议 C:sync, 同步  数据到达对方存储设备 DRBD Source: DRBD资源 资源名称:可以是除了空白字符外的任意

ISO 基础之 (十三) protocol 协议

一 简绍 protocol,简单来说就是一系列不属于任何类的方法列表,其中声明的方法可以被任何类实现.这种模式一般称为代理(delegation)模式.通过Protocol定义各种行为,在不同的场景采用不同的实现方式.在iOS和OS X开发中,Apple采用了大量的代理模式来实现MVC中View和Controller的解耦. 1.Protocol:就一个用途,用来声明一大堆的方法(不能声明成员变量),不能写实现. 2.只要某个类遵守了这个协议,就拥有了这个协议中的所有方法声明. 3.只要父类遵守

企业搜索引擎开发之连接器connector(二十五)

下面开始具体分析连接器是怎么与连接器实例交互的,这里主要是分析连接器怎么从连接器实例获取数据的(前面文章有涉及基于http协议与连接器的xml格式的交互,连接器对连接器实例的设置都是通过配置文件操作的,具体文件操作尚未详细分析(com.google.enterprise.connector.persist.FileStore类)) 本文以数据库连接器实例为例来分析,数据库类型连接器是通过调用mybatis(sqlmap框架)组件与数据库进行操作的,我们通过前端提交的数据库连接器实例表单信息最终存

protocol 协议

一.协议用于:观察者模式,代理模式 二.协议只是用来声明方法 只要一个类遵守了某一份协议,就能拥有这份协议中的所有声明的方法 只要父类遵守这个协议,就相当于子类也遵守 一个类可以遵守多个协议 三.协议的定义 @protocol 协议名称<NSObject> //方法声明列表 @end 四.类遵守协议: @interface 类名:NSObject <协议名1,协议名2> @end 五.约束关键字 @required//要求必须实现,不实现就会发出警告 @optional//不要求实