欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

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

来源: 开发者 投稿于  被查看 34616 次 评论:106

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


1. 协议的定义:

》协议就是用来声明一大堆方法的。

@protocol 协议名称 <NSObject>

// 方法声明列表..........

@end


2. 如何遵守协议 :

》类遵守协议,本类就会拥有它遵守的协议所有的方法:

@interface 类名 : 父类名 <协议名称1 ,协议名称2 , .... >

 ............. // 类的声明

@end

》协议遵守协议,本协议就会拥有其他协议所有的方法:

@protocol 协议名称 <其他协议名称1 , 其他协议名称2,.....>

 // 本协议的方法声明,

@end


3. 协议中方法声明的关键字:

》@required (默认) ,要求实现,如果没有实现,会发出警告

    例如,在协议体中:   @required

                                           - (void) text() ;


》@optional ,不要求实现,不管在遵守该协议的类中实不实现,都不会发出警告。


4.定义一个变量的时候,限制这个变量保存的对象遵守某个协议:

》形式:类名<协议名称> * 变量名;

                  id <协议名称> 变量名;

》例如:NSObject<MyProtocol> * obj ;

                   id <MyProtocol> obj2 ;

注意:如果指向的对象没有遵守对应的协议,编译器会有警告:等式右边的对象会有一个黄色的下划线


5. @property 中声明的属性也可以用做一个遵守协议的限制:

》形式: @property (nonatomic , strong)  类名<协议名称> * 成员变量名;

                @property (nonatomic , strong)  id<协议名称> *  成员变量名;

》例如:@property (nonatomic , strong)  Person<MyProtocol> * person;

                @property (nonatomic , strong)  id<MyProtocol> *  person2;


6.协议可以在单独 .h 文件中,也可以在某个类中:

》如果这个协议只用在某个类中,应该把协议定义在该类中;

》如果这个协议用在很多类中,就应该定义在单独文件中。


7.分类可用定义在单独 .h 和 .m 文件中,也可以定义在原来类中:

》分类声明形式的例子:@interface Person (other)

                                                 ......... // 声明体

                                              @end

》一般情况下,都是定义在单独文件中;

》定义在原来类中的分类,只要看懂即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关频道:

用户评论