《Objective-C基础教程》第13章 协议
2017-10-23 11:31
381 查看
第13章 协议
13.1 正式协议
与非正式协议一样,正式协议包含了方法和属性的有名称列表。不同的是,正式协议要求显式地采用(在@interface声明中列出协议的名称)
采用协议之后,类就要遵守该协议,实现该协议的所有方法
13.1.1 声明协议
@protocol NSCopying -(id) copyWithZone:(NSZone *) zone; @end
继承父协议
@protocol MySuperDuberProtocol <MyparentProtocol> -(void)....//需要实现的方法 @end
通常可以使用NSObject作为根协议(不要将其与NSObject类混淆)NSObject类复合NSObject协议,这意味着所有的对象都符合NSObject协议
13.1.2 采用协议
@interface Car:NSObject<NSCopying,NSCoding> { // instance variables } //methods @end //Car
13.2 协议和数据类型
可以在数据类型中为实例变量和方法参数制定协议名称,有助于检查代码中的错误。-(void)setObjectValue:(id<NSCopying>)object;
编译器将知道setObjectValue:接受任意类型的对象作为参数,但前提是要遵守该协议。否则会发生告警。
13.3 Objective-C 2.0 的新特性
@optional -(void)...//不一定要实现 @required -(void)...//一定要实现
非正式协议已经被替换成带有@optional方法的正式协议。
13.4 委托方法
委托(delegation)是一个经常与协议共用的特性。委托就是某个对象指定另一个对象处理某些特定任务的设计模式。使用委托来执行相应方法时,代码首先询问委托是否拥有这个方法的实现,如果实现了,它就会要求委托处理这个方法。
示例
A.h
@protocol Mydelegate//协议的声明 -(void)Fun; @end @interface A:NSObject { id<Mydelegate> delegate;//声明一个委托对象,我们要把事情委托给实现Mydelegate协议的类 } @property(assign,nonatomic) id<Mydelegate> delegate; @end
A.m
@implementation -(void)init { delegate = B; } -(void)FunToOther { [delegate Fun];//将消息发送给委托去处理 } @end
委托对象的实现
B.h
#import"A.h" @interface B:NSObject<MyDelegate> @end
B.m
@implementation -(void)fun { //实现Mydelegate中制定的方法 } @end
相关文章推荐
- Objective-C 基础教程 正式协议
- [学习笔记—Objective-C]《Objective-C-基础教程 第2版》第十三章 协议
- Objective-C基础教程学习笔记(十三)协议
- 【《Objective-C基础教程 》笔记ch04】(五)OC中的继承inheritance机制
- objective-c基础教程
- Objective-C基础教程(第2版)学习记录点滴
- objective-c教程-基础1(interface)
- <<Python基础教程>>学习笔记 | 第13章 | 数据库支持
- Objective-C基础9 :协议(@protocol)
- 【《Objective-C基础教程 》笔记ch03】(四)OC中的OOP
- objective-c教程-基础2(implemention)
- ArcGIS Runtime SDK for iOS开发系列教程(3)——Objective-C语法基础
- Objective-C基础教程学习笔记(附录)从Java转向Objective-C
- Android基础入门教程——7.6.4 基于UDP协议的Socket通信
- 洪小瑶学IOS(一):准备起航 <Objective-C基础教程>笔记
- Objective-C基础教程读书笔记(6)
- [Ebook] Objective-C基础教程.pdf (Learn Objective-C on the Mac中文版)
- Objective-C基础教程学习笔记(三)面向对象编程基础知识
- 【《Objective-C基础教程 》笔记ch02】(二)Boolean类型及实例
- Objective-C(八、正式协议Protocol,非正式协议informal protocol)——iOS开发基础