IOS开发-OC学习-protocol(协议)
2016-03-29 15:11
465 查看
在OC语言中,协议是一组方法,里面有两种方法,一种是遵守这个协议的类的实例必须实现的方法,另一种是可以实现也可以不实现的方法。
例如我定义一个学生的协议,这个协议里有两个方法,其中一个是必选的方法;学生上学,另一个是可选方法,学生学习。只要是学生,不管大学生,中学生,小学生,只要遵守这个协议,都必须实现学生协议中的必选方法,也就是学生上学的方法。
协议中只声明方法,不需要实现方法。方法的实现在遵守这个协议的类的.m文件中实现。
以下是Student协议的定义:
以下是大学生类的.h文件
以下是大学生类的.h文件:
以下是另一个遵守student协议的类:小学生类的.h文件:
小学生类的.m文件:
以下是主函数:
注意:在以上例程中,student协议中的可选方法study没有被实现,这是可以的,但是必选方法gotoschool一定要被实现。
例如我定义一个学生的协议,这个协议里有两个方法,其中一个是必选的方法;学生上学,另一个是可选方法,学生学习。只要是学生,不管大学生,中学生,小学生,只要遵守这个协议,都必须实现学生协议中的必选方法,也就是学生上学的方法。
协议中只声明方法,不需要实现方法。方法的实现在遵守这个协议的类的.m文件中实现。
以下是Student协议的定义:
#import <Foundation/Foundation.h> //协议所遵守的基协议是NSObject @protocol Student <NSObject> //定义必选方法 @required -(void)gotoschool; //定义可选方法 @optional -(void)study; @end
以下是大学生类的.h文件
#import <Foundation/Foundation.h> //导入学生协议头文件 #import "Student.h" //声明大学生类,遵守的student协议用<>括起来 @interface academician : NSObject <Student> @end
以下是大学生类的.h文件:
#import "academician.h" @implementation academician //实现student协议中规定的必须实现的方法 -(void)gotoschool{ NSLog(@"大学生去上学"); } @end
以下是另一个遵守student协议的类:小学生类的.h文件:
#import <Foundation/Foundation.h> #import "Student.h" @interface pupil : NSObject <Student> @end
小学生类的.m文件:
#import "pupil.h" @implementation pupil -(void)gotoschool{ NSLog(@"小学生去上学"); } @end
以下是主函数:
#import <Foundation/Foundation.h> //包含大学生类头文件 #import "academician.h" //包含小学生类头文件 #import "pupil.h" int main(int argc, const char * argv[]) { // 实例化一个大学生对象 academician *daxuesheng = [[academician alloc]init]; // 大学生对象遵守student协议中的gotoschool方法 [daxuesheng gotoschool]; // 实例化一个小学生对象 pupil *xiaoxuesheng = [[pupil alloc]init]; // 小学生对象遵守student协议中的gotoschool方法 [xiaoxuesheng gotoschool]; return 0; }
注意:在以上例程中,student协议中的可选方法study没有被实现,这是可以的,但是必选方法gotoschool一定要被实现。
相关文章推荐
- iOS App使用设计模式中的模板方法模式开发的示例
- iOS 开发技巧心得体会
- 关于iOS多线程,你看我就够了
- iOS开发:IB VS 纯代码
- iOS开发中的系统版本比较
- iOS CocoaPods安装和使用图解
- iOS视频水印
- iOS之 Xcode7下 bitcode的工作流程及安全评估
- 又一个高性能轻量级的iOS模型框架YYModel
- iOS单例模式(Singleton)
- ios开发-处理服务器返回的日期
- iOS应用崩溃日志分析 iOS应用崩溃日志揭秘
- ios: 画半个椭圆
- iOS中KVC和KVO
- IOS最新好用的框架推荐 2014-10-29
- iOS开发篇(九)FMDB的使用与介绍2
- iOS 全局变量
- 提高iOS开发效率的第三方框架(更新中)
- 七款Debug工具推荐:iOS开发必备的调试利器
- ios学习--属性字符串NSAttributeString与NSString相互转换包含图片和emoji图