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) 

 

 

OC学习篇之---协议的概念和用法

在前一篇文章中我们介绍了OC中类的延展:http://blog.csdn.net/jiangwei0910410003/article/details/41775603,这一篇文章我们在来看一下OC中...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2014年12月06日 16:25
  • 33785

OC中协议(Protocol)的小结

协议基础语法 | 用协议实现代理 | 用协议实现不同对象之间的传值 | 用协议实现回调 | 用协议实现多继承 附有详细源代码和注释...
  • Macro_13
  • Macro_13
  • 2014年12月18日 15:07
  • 3557

黑马程序员_ 利用oc的协议实现代理模式

先说下代理模式是什么吧 定义: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用。 在看...
  • chenchaoflight
  • chenchaoflight
  • 2014年06月17日 20:39
  • 9950

OC协议-正式协议的定义

// //  main.m //  正式协议的定义 // //  Created by Goddog on 15/1/11. //  Copyright (c) 2015...
  • HUXU981598436
  • HUXU981598436
  • 2015年01月11日 15:38
  • 1022

oc中分类 扩展 协议的使用及区别

一、分类      1、适用范围      当你已经封装好了一个类(也可能是系统类、第三方库),不想在改动这个类了,可是随着程序功能的增加需要在类中增加一个方法,这时我们不必修改主类,只需要给你原来的...
  • lboboby
  • lboboby
  • 2015年03月04日 16:06
  • 5169

第十五篇:OC中 分类,关键字protocol 协议的声明与应用

1. 协议的定义: 》协议就是用来声明一大堆方法的。 @protocol 协议名称 // 方法声明列表.......... @end 2. 如何遵守协议 : 》类遵守协议,本类就会拥有它遵守的...
  • u010372095
  • u010372095
  • 2015年09月14日 22:05
  • 1125

OC协议-规范、协议与接口,使用类别实现非正式协议

// //  main.m //  非正式协议 // //  Created by Goddog on 15/1/11. //  Copyright (c) 2015年 ...
  • HUXU981598436
  • HUXU981598436
  • 2015年01月11日 11:56
  • 575

OC中的类别、类扩展与协议

类别(category)功能: 1. 类别可以给原有的类添加新功能 2. 可以在方法内部访问原有类的成员变量和方法//ZZPerson.h @interface ZZPerson : NSObje...
  • zhongjiezheng
  • zhongjiezheng
  • 2015年10月31日 20:17
  • 704

OC中的非正式协议与正式协议的区别

声明:以下内容转自:http://blog.csdn.net/wzzvictory/article/details/9295317# 这两个概念困扰我很久了,一直都很像搞清楚到非正式...
  • Sky_Warmer
  • Sky_Warmer
  • 2015年05月26日 11:54
  • 2432

OC block 与协议的一些小理解

今天重新复习了OC中比较常用的几个语法点,在OC项目中经常会使用到,这样会节省很多精力避免做一些重复而又没有意义的工作,还是那句话“不会偷懒的程序猿,不是个好猴子”。好了,进入正题:关于协议的问题(p...
  • taoshu123
  • taoshu123
  • 2015年04月30日 18:43
  • 468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oc协议
举报原因:
原因补充:

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