黑马程序员——protocol的基本使用和代理设计模式
2015-01-01 12:30
573 查看
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1、protocol的用途
1)用来声明方法(不能声明成员变量)
2)遵守这个协议的类,相当于拥有这个协议中所有的方法声明
3)子类能够继承父类遵守的协议
2、protocol的书写格式 和 遵守protocol的类的书写格式
协议书写格式:
注意:<NSObject> 为本协议遵守的协议,也可以换成其它协议。一个协议遵守另外的协议,就相当于拥有了那个协议的所有方法的声明。<NSObject>是任何协议和类都要继承(或间接继承)的协议被称为基协议。
遵守协议的书写格式:
3、协议中声明方法类型的两种关键字
4、限制生成的对象变量 / 声明类中的成员对象 遵守某个协议
a)声明类中的成员对象遵守协议
b)限制生成的对象变量遵守协议
5、代理设计模式
设计了一个最小化“代理模式”例程:
1、protocol的用途
1)用来声明方法(不能声明成员变量)
2)遵守这个协议的类,相当于拥有这个协议中所有的方法声明
3)子类能够继承父类遵守的协议
2、protocol的书写格式 和 遵守protocol的类的书写格式
协议书写格式:
@protocol 协议名称 <NSObject> // 方法声明列表.... @end
注意:<NSObject> 为本协议遵守的协议,也可以换成其它协议。一个协议遵守另外的协议,就相当于拥有了那个协议的所有方法的声明。<NSObject>是任何协议和类都要继承(或间接继承)的协议被称为基协议。
遵守协议的书写格式:
@interface ClassName : FatherClass <protocol1, protocol2> @end
3、协议中声明方法类型的两种关键字
@required // 默认,要求实现,如果没有实现,会发出警告(只是警告,不会报错) @optional // 不要求实现,是否实现都不会有警告
4、限制生成的对象变量 / 声明类中的成员对象 遵守某个协议
a)声明类中的成员对象遵守协议
// @property (nonatomic, strong) 类名<协议名称> *属性名; @property (nonatomic, strong) Dog<MyProtocol> *dog; // @property (nonatomic, strong) id<协议名称> 属性名; @property (nonatomic, strong) id<MyProtocol> dog2;
b)限制生成的对象变量遵守协议
// 类名<协议名称> *变量名; NSObject<MyProtocol> *obj; // id<协议名称> 变量名; id<MyProtocol> obj2;
5、代理设计模式
设计了一个最小化“代理模式”例程:
// // Helpprotocol.h // #import <Foundation/Foundation.h> @protocol Helpprotocol <NSObject> - (void)paotui; @end // // Man.h // #import <Foundation/Foundation.h> #import “Helpprotocol.h" @interface Man : NSObject - (void)jiaorenpaotui; @property (nonatomic, strong) id<Helpprotocol> somehelper; @end // // Man.m // #import "Man.h" @implementation Man - (void)jiaorenpaotui { [_somehelper paotui]; } @end // // Helper.h // #import <Foundation/Foundation.h> #import “Helpprotocol.h" @interface Helper : NSObject <Helpprotocol> @end // // Helper.m // #import “Helper.h" @implementation Helper - (void)paotui { NSLog(@"pao tui wan cheng!"); } @end // // main.m // #import <Foundation/Foundation.h> #import "Man.h" #import “Helper.h" int main() { Man *man1 = [[Man alloc] init]; Helper *helper1 = [[Helper alloc]init]; man1.somehelper = helper1; [man1 jiaorenpaotui]; return 0; }
相关文章推荐
- protocol的基本使用与代理设计模式的应用
- 黑马程序员——OC基础学习(五)---分类(Category),代码块Block和protocol代理设计模式
- 黑马程序员——OC学习——Protocol和代理设计模式
- 黑马程序员__protocol协议在代理模式中的使用
- 黑马程序员_基本数据的自动拆装箱及享元设计模式简介
- 使用自动生成java文件和自动编译的动态代理模式-马士兵设计模式教程
- 设计模式 - 代理模式(proxy pattern) 未使用代理模式 详解
- OpenCV 2 学习笔记(11): 算法的基本设计模式<2>:使用Controller
- 黑马程序员——10、OC语言(block、protocol和代理模式)
- 设计模式之Protocol实现代理模式
- 黑马程序员_Java基础_面向对象(Static的使用、对象初始化和调用成员过程、单例设计模式)
- 黑马程序员 JDBC_使用模板方法设计模式处理DAO中的方法(李勇老师)
- 黑马程序员--03基本数据的自动拆装箱及享元设计模式
- 【设计优化】-正确使用代理模式
- OC---protocol代理设计模式
- 黑马程序员--设计模式之代理模式 02
- 黑马程序员java学习第六天,static静态的使用及单例设计模式
- 黑马程序员_单例设计模式和对象数组的使用
- 黑马程序员_Java高新技术_基本类型数据的自动拆装箱及享元设计模式
- IOS开发:基本设计模式(下)-使用设计模式解决问题