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. 【零基础学习iOS开发】【02-C语言】11-函数的声明和定义

    在上一讲中,简单介绍了函数的定义和使用,只要你想完成一个新功能,首先想到的应该是定义一个新的函数来完成这个功能.这讲继续介绍函数的其他用法和注意事项. 一.函数的声明 1.在C语言中,函数的定义顺序是 ...

  2. PHP开篇之环境的搭建

    PHP开篇之环境的搭建 Wamp软件下载:http://www.wampserver.com/ 此时是2.5版本 下载下来一键安装. 安装有个主意 这里先不用管 或者smtp@qq.com 13643 ...

  3. SaaS系列介绍之七: SaaS模式分析(下)

    1 SaaS模式下的质量管理 质量管理是从事SaaS事业的企业管理的重要课题,质量管理的职能是质量方针.质量目标和质量指标的制定和贯彻实施,中心目标是促进产品质量.提高客户满意度. 软件质量要素包含以 ...

  4. Python字符串编码问题

    编码问题:Unicode把所有语言都统一到一套编码里,这样就不会再有乱码问题了. ASCII编码和Unicode编码的区别:ASCII编码是1个字节,而Unicode编码通常是2个字节.字母A用ASC ...

  5. Hadoop初步认识

    Hadoop的介绍: Hadoop是一个适用于大数据的并行存储和计算的平台,是 Apache的一个用java 语言实现开源软件框架,实现了在大量计算机组成的集群中对海量数据进行分布式计算.Hadoop ...

  6. web.xml的说明

    <!--DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. Copyright 2000-2007 Sun Microsystems ...

  7. xp宿主机和VMware下Ubuntu12.04共享文件夹

    VMware下Windows与Linux共享文件的方法有很多,比如Samba等等,我这里介绍简单地通过设置VMware来达到共享的目的. 打开VMware的设置,在"options" ...

  8. poj 1201 Intervals(差分约束)

    题目:http://poj.org/problem?id=1201 题意:给定n组数据,每组有ai,bi,ci,要求在区间[ai,bi]内至少找ci个数, 并使得找的数字组成的数组Z的长度最小. #i ...

  9. poj 3041 Asteroids (二分图的最大匹配 第一题)

    题目:http://poj.org/problem?id=3041 题意:在某个n*n的空间内,分布有一些小行星,某人在里面打炮,放一枪后某一行或某一列的行星就都没了,让求最少的打炮数. 然后把每行x ...

  10. bzoj3774

    这算是最小割中比较难的吧 看到选取显然最小割 看到上下左右四个点我感觉肯定和染色相关 注意每个点的收益获得条件是[或],因此我们考虑拆点i', i,分别表示通过四周控制和控制本身的代价 连边s--&g ...