A.概念

1.用来声明方法(不能声明成员变量)
2.只要某个类遵守了这个协议,相当于拥有了协议中得所有方法的声明
3.属性
(1)@required:默认,要求实现,不实现就会发出警告
(2)@optional:不要求实现
————MyProtocol.h--------------
 @protocol MyProtocol
@required
- (void) test1; @optional
- (void) test2; - (void) test3; @end
 
4.父类遵循的协议,子类也会继承
 
5.基协议
(1)一个协议遵守了另外一个协议,就可以拥有其所有声明的方法
————MyProtocol.h———————
 #import <Foundation/Foundation.h>
#import "MyProtocol.h" @protocol MyProtocol2 <MyProtocol> @end
 
(2)基协议<NSObject>
a..建议所有协议都遵循基协议
@protocol MyProtocol <NSObject>
 
b.动态遵守协议
    Person<MyProtocol2> *p = [[Person alloc] init];
 
c.遵守多个协议
@interface Person : NSObject <MyProtocol, MyProtocol2>
 
 
6.协议和成员对象
===========Person.h====================
 @interface Person : NSObject <MyProtocol]] >

 @property(nonatomic, strong) id<MyProtocol2> obj;

 @end
 
===========main.c======================
 int main(int argc, const char * argv[]) {
Person *p = [[Person alloc] init];
Dog *d = [[Dog alloc] init]; p.obj = d; // 警告,Dog没有遵守MyProtocol2协议 return ;
}
 
7.@protocol
在.h可以先使用@protocol声明协议,在.m中再#import进来protocol的.h文件
==========Person.h=====================
 #import <Foundation/Foundation.h>

 @protocol MyProtocol;
@protocol MyProtocol2; @interface Person : NSObject <MyProtocol]] > @property(nonatomic, strong) id<MyProtocol2> obj; @end
 
==========Person.m=====================
 #import "Person.h"
#import "MyProtocol.h"
#import "MyProtocol2.h" @implementation Person
- (void)test1
{ } - (void)test3
{ } @end
 
 

[Objective-c 基础 - 3.4] protocol的更多相关文章

  1. Objective中的协议(Protocol)

    Objective中的协议(Protocol) 作用: 专门用来声明一大堆方法. (不能声明属性,也不能实现方法,只能用来写方法的声明). 只要某个类遵守了这个协议.就相当于拥有这个协议中的所有的方法 ...

  2. ISO 基础之 (十三) protocol 协议

    一 简绍 protocol,简单来说就是一系列不属于任何类的方法列表,其中声明的方法可以被任何类实现.这种模式一般称为代理(delegation)模式.通过Protocol定义各种行为,在不同的场景采 ...

  3. Objective-C /iphone开发基础:协议(protocol)

    protocol协议时为了补充Objective-C 只能单继承的缺陷而增加的一个新功能.Objective-C重所有的方法都是虚方法,所以在oc重也就没有关键字 virtual一说,有了协议可以补充 ...

  4. [置顶] Objective-C ,/,ios,/iphone开发基础:协议(protocol)

    protocol协议时为了补充Objective-C 只能单继承的缺陷而增加的一个新功能.Objective-C重所有的方法都是虚方法,所以在oc重也就没有关键字 virtual一说,有了协议可以补充 ...

  5. Objective—C基础学习总结

        1. (1)面向过程:一种以事件为中心的编程思想         (2)面向对象:一种以对象为中心的编程思想        2.get和set是用来访问和修改对象里的属性值           ...

  6. Objective C 基础

    1,字符串加@: 不加@的是C语言字符串. 加@的代表的是OC的NSString http://www.jikexueyuan.com/course/71_2.html 2,setValuesForK ...

  7. Python中reactor,factory,protocol

    最为简单的情况下,除了了解清reactor的简单使用,你还要了解Protocol和Factory.它们最终都会由reactor的侦听建立和run来统一调度起来. 建立服务器的第一个要解决的问题就是服务 ...

  8. 客户端服务端通信protocol

    这个协议不知我在上面耗费了多长时间,也有人问过我咋回事,这个protocol不长,但对于我来说理解起来很费劲,今天回来看看忽然看懂了(80%),只能说不知看了多少遍 其实这些东西应该在来的一个月这样子 ...

  9. [置顶] IOS 基础入门教程

    IOS 基础入门教程 教程列表: IOS 简介 IOS环境搭建 Objective C 基础知识 创建第一款iPhone应用程序 IOS操作(action)和输出口(Outlet) iOS - 委托( ...

随机推荐

  1. 【BZOJ 3190】 3190: [JLOI2013]赛车 (半平面交)

    3190: [JLOI2013]赛车 Description 这里有一辆赛车比赛正在进行,赛场上一共有N辆车,分别称为个g1,g2--gn.赛道是一条无限长的直线.最初,gi位于距离起跑线前进ki的位 ...

  2. [itint5]完全二叉树节点个数的统计

    http://www.itint5.com/oj/#4 这题是利用完全二叉树的性质计算节点数目.那么是通过比较左右子树的最左结点的高度来看那边是满的,然后递归计算. //使用getLeftChildN ...

  3. LoadImage 和 BitBlt

    #include <windows.h> #define WINDOWCLASS TEXT("Test") #define WNDTITLE TEXT("Te ...

  4. POJ1573——Robot Motion

    Robot Motion Description A robot has been programmed to follow the instructions in its path. Instruc ...

  5. 关于fedora下jdk的安装

    http://zhumeng8337797.blog.163.com/blog/static/1007689142012472620637/ alternative命令 http://blog.csd ...

  6. R语言笔记:快速入门

    1.简单会话 > x<-c(1,2,4) > x [1] 1 2 4 R语言的标准赋值运算符是<-.也可以用=,不过不建议用它,有些情况会失灵.其中c表示连接(concaten ...

  7. 关于xml的一些知识,DTD,XSD

    DTD 文档类型定义(Document Type Definition)是一套关于标记符的语法规则.它是标准通用标记语言和 可扩展标记语言1.0版规格的一部分,是文档的验证机制.文档类型定义是一种保证 ...

  8. OAF与Windows 7版本不兼容黑屏卡顿问题

    OAF版本比较原始,在Window7中无法应用配色方案,导致黑屏卡顿问题.(在启动OC4J后,Window7的配色方案还是会还原至原始状态) 修改$JDEV_HOME/jdev/bin/jdev.co ...

  9. 1316. Electronic Auction(树状数组)

    1316 我想说 要不要这么坑 WA了一个小时啊 ,都快交疯了,拿着题解的代码交都WA 最后很无语的觉得题解都错了 重读了N遍题意 发现没读错啊 难道写题解的那个人和我都想错了?? 最后把g++换个C ...

  10. 设计模式 - command

    将请求封装为对象,从而可以使用不同的请求对客户进行参数化,该模式的关键在于对不同请求的封装.简单的说,也就是在请求发出者和客户间通过command对象进行解耦,从而使得请求者可以通过实例化不同的com ...