oc协议

转载 2015年11月17日 18:27:42


协议就是定义一组方法实现类必须实现这些方法,类似于java的接口和抽象类

 

协议的定义语法:

 

Java代码  收藏代码
  1. @protocol  协议名  <父协议>  
  2. 定义方法  
  3. @end  
  4. 注:定义协议的关键字是@protocol,同时协议也是可以继承父协议的  
  5.   
  6. 协议中定义的方法还有两个修饰符:  
  7. @required:这个表示这个方法是其他类必须实现的,也是默认的值  
  8. @optional:这个表示这个方法对于其他类实现是可选的  

 

协议的定义TestProtocol.h

Java代码  收藏代码
  1. //oc协议的简单使用  
  2. @protocol TestProtocol <NSObject>  
  3.   
  4. @required//必须实现  
  5. -(void)printlf;  
  6. +(void)getHotel;  
  7.   
  8. @optional//可选实现  
  9. -(void)setHotel;  
  10.   
  11. @end  
  12.   
  13.   
  14. #endif /* TestProtocol_h */  

伦理片 http://www.dotdy.com/ 

文件TestExtends.h

Oc代码  收藏代码
  1. #import "TestProtocol.h"  
  2.   
  3. @interface TestExtends: NSObject<TestProtocol>{  
  4.       
  5. NSString* name;  
  6.       
  7. }  
  8. @property NSString *name; //类似set和get方法  
  9.   
  10. //@property name;  
  11.   
  12.   
  13. -(void)setName:(NSString*)newName;//定义方法  
  14.   
  15. -(id)initWithC:(NSString*)newName;//定义构造方法  
  16.   
  17.   
  18. @end  
  19.   
  20. #endif /* TestExtends_h */  

 

TestExtends.m文件

Java代码  收藏代码
  1. #import "TestExtends.h"  
  2.   
  3. @implementation TestExtends  
  4.   
  5. @synthesize name;  
  6.   
  7. -(void)setName:(NSString*)newName{  
  8.   
  9.     NSLog(@"调用父类的setName方法");  
  10.   
  11. }  
  12.   
  13. +(void)getHotel{  
  14.  NSLog(@"getHotel");//必须实现的方法  
  15. }  
  16.   
  17. -(void)printlf{  
  18.     NSLog(@"printlf");//必须实现的方法  
  19. }  
  20.   
  21. -(void)setHotel{  
  22.     NSLog(@"setHotel");//可选的方法  
  23. }  
  24.   
  25.   
  26. -(id)initWithC:(NSString *)newName{  
  27.     if (self==[super init]) {  
  28.         name=newName;//  
  29.         NSLog(@"父类的构造方法被调用。。。。");  
  30.     }  
  31.   
  32.     return self;  
  33. }  
  34.   
  35. @end  

 

 影音先锋电影 http://www.iskdy.com/

mian文件

Java代码  收藏代码
  1. TestExtends* te=[[TestExtends alloc] init];  
  2.        [te setName:@"Object-c"];  
  3.        NSLog(@"简单的实现");  
  4.        [te printlf];<span style="font-family: Menlo;"> </span>//调用协议的方法  

 

运行结果:

2015-11-04 23:04:40.179 test_01[1432:80295] 调用父类的setName方法

2015-11-04 23:04:40.180 test_01[1432:80295] 简单的实现

2015-11-04 23:04:40.180 test_01[1432:80295] printlf

 

(lldb) 

 

 

相关文章推荐

oc485通信协议

  • 2015年12月12日 23:07
  • 114KB
  • 下载

OC 代理 协议 委托 数据源的概念

转载自http://www.devdiv.com/home.php?mod=space&uid=12744&do=blog&id=6075 OBJC 中的 protocol 相当...

OC中特性、静态成员(static)以及协议的基本知识

特性:@property  @synthesize    @property是一种新的编译器功能,表示声明了一个新对象的属性;存在于接口部分(interface)。      例如:@proper...

黑马程序员——OC—block和protocol协议

黑马程序员——OC—block和protocol协议  一、block:       1. 作用:用来保存一段代码       2. block的标志:^       3. 定义的格式: 返回值 (^...

oc基础知识:属性、协议和分类

2013年11月27日日志: 1.属性: @property(assign ,copy或retain内存管理的信息)类型  实例变量名 @synthesize  实例变量名 ...

OC - 第七章 类的扩展: 类目Category, 延展Extension, 协议Protocol ( 一 )

/******** 类的扩展: 子类, 类目Category, 延展Extension, 协议Protocol ********/// 一、Category(类目, 类别, 分类等等): // ...

黑马程序员---OC基础---Block、分类Category、协议protocol

黑马程序员---OC基础---Block、分类Category、协议protocol

自学iOS开发系列----OC(协议和委托代理)

协议 1.协议是OC的一种语法。OC的协议,类似于JAVA中接口,用来规范函数声明,实现多继承或对象间通信的一种语法。2.协议的两种写法 ①command+N新建协议类(HTProtocol) ...

IOS学习之OC语言BLOCK和协议

一、BOLCK (一)简介 BLOCK是什么?苹果推荐的类型,效率高,在运行中保存代码。用来封装和保存代码,有点像函数,BLOCK可以在任何时候执行。 BOLCK和函数的相似性:(1...

OC学习之路(7) - 类目/延展/协议

(一)类目(分类) 1.   重要知识 Ø  类目(Category)是用于对原有类的方法的扩展,这些类包括系统类和自定义类。 Ø  如果扩展的方法名跟原有类的方法名一样,则会覆盖原有的方法 Ø  类...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oc协议
举报原因:
原因补充:

(最多只允许输入30个字)