protocol
2015-11-02 10:11
459 查看
一 protocol的概念
协议是多个类共享的一个方法列表。协议中列出的方法没有相应的实现,计划由其他人来实现(比如你)。协议提供了一种方式,用指定的名称定义一组多少有点相关的方法。协议声明的方法可以选择实现 和必须实现。
二 protocol的作用
1.解耦
2.增加程序的可扩展性
三 protocol的格式
@interface 类名 : 父类 <协议名称1, 协议名称2,…>
@end
协议可以指定方法的实现方式如:
@required:方法必须要实现
@optional:方法可以选择实现
四 protocol 的基本使用方法
1)一个类遵守了协议,它就拥有了协议中所有方法的声明
2)父类遵守了协议,那么子类也会遵守
3)OC中没有多继续,但可以遵守多个协议
4)协议也可以遵守另一个协议
五 protocol 实验用例
例1:综合的例子
下面是food协议
下面是person类
下面是继承person类的children类
结构图如下:
运行结果如下:
协议是多个类共享的一个方法列表。协议中列出的方法没有相应的实现,计划由其他人来实现(比如你)。协议提供了一种方式,用指定的名称定义一组多少有点相关的方法。协议声明的方法可以选择实现 和必须实现。
二 protocol的作用
1.解耦
2.增加程序的可扩展性
三 protocol的格式
@interface 类名 : 父类 <协议名称1, 协议名称2,…>
@end
协议可以指定方法的实现方式如:
@required:方法必须要实现
@optional:方法可以选择实现
四 protocol 的基本使用方法
1)一个类遵守了协议,它就拥有了协议中所有方法的声明
2)父类遵守了协议,那么子类也会遵守
3)OC中没有多继续,但可以遵守多个协议
4)协议也可以遵守另一个协议
五 protocol 实验用例
例1:综合的例子
// main.m实现代码 #import <Foundation/Foundation.h> #import "Person.h" #import "children.h" int main(int argc, const char * argv[]) { @autoreleasepool { Person *per = [Person new]; [per run]; //必须实现的协议方法 children *child = [children new]; [child eat]; //可选实现的协议方法 nsprotocol协议 [child food]; //可选实现的协议方法 food协议 } return 0; } /*************************************************/
下面是food协议
// food.h 协议** #import <Foundation/Foundation.h> @protocol food <NSObject>//food协议遵守NSObject协议 @optional -(void)food; //一个可选择实现的方法 @end ****下面是nsprotocol协议**** /*************************************************/ **nsprotocol.h 协议** #import <Foundation/Foundation.h> #import "food.h" @protocol NSprotocol <food>//遵守food协议,同时也遵守nsobject协议 -(void)run; //默认协议方法是必须要实现的 @optional //选择实现协议 -(void) eat; @end
下面是person类
#import "Person.h" @interface children : Person @end /*************************************************/ *// Person.m person类** #import "Person.h" @implementation Person -(void)run { NSLog(@"这个人正在跑"); } //-(void) eat; //没有实现这个方法,因为他是可选的 //-(void)food; //它里面包含这个方法,只不过它是可选的 @end
下面是继承person类的children类
#import "children.h" @implementation children -(void)eat //children类 也包含协议的声明,所以这里可以实现它 { NSLog(@"小孩正在吃饭"); } -(void)food { NSLog(@"小孩的食物是牛奶"); } @end
结构图如下:
运行结果如下:
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器
- IOS开发第三方语音-微信语音