ios编程思想:委托实现方式1 - 协议方式(protocol)
来源:互联网 发布:仁王pc版帧数优化补丁 编辑:程序博客网 时间:2024/06/14 20:17
<<设计思想>>:
- MyClass是主类
- 当MyClass要打印时,委托DelegateClass执行打印
- 具体打印用到的方法,通过协议定义,该协议在DLogProtocol内声明
- 结构如下:
<具体实现>>:
一、通常在类的头文件内定义协议,也可以单独使用一个头文件定义协议
// DLogProtocol.h// 定义打印用到的方法@protocol DLogProtocol<NSObject>@required- (void)printLogs1;@optional- (void)printLogs2;@end
二、定义一个委托类(遵循需要使用的协议),用于给别的类作为委托对象
// DelegateClass.h#import "DLogProtocol.h" //-->需要导入协议的头文件//该类遵循DLogProtocol协议,可以用来作为MyClass的委托对象@interface DelegateClass : NSObject <DLogProtocol>@end// DelegateClass.m // 实现具体的打印方法@implementationDelegateClass- (void)printLogs1 { NSLog(@"printLogs1.....");} @end
三、在主类里面,需要定义一个id类型的属性,用于指定委托类对象。
// MyClass.h// MyClass含有一个委托id属性,用于指定委托对象@interface MyClass : NSObject@property (nonatomic,strong)id<DLogProtocol>delegate;- (void)helpMeToPrint;@end 主类里面需要打印时(helpMeToPrint),交给delegate处理// MyClass.m@implementation MyClass - (void)helpMeToPrint { [self.delegateprintLogs1];} @end
四、最后,将id指向委托类,
// main.m#import "MyClass.h"#import "DelegateClass.h" int main(intargc,const char* argv[]) { @autoreleasepool { MyClass *myclass = [[MyClassalloc]init]; DelegateClass *declass = [[DelegateClassalloc]init]; myclass.delegate = declass; [myclass helpMeToPrint]; } return 0;}
0 0
- ios编程思想:委托实现方式1 - 协议方式(protocol)
- ios编程思想:委托实现方式2 - 协议类方式
- ios 委托 可选方法的实现方式
- ios委托delegate与协议protocol
- IOS学习笔记-Protocol(协议-委托)
- IOS文本框事件--委托方式实现
- 协议(protocol) & 委托(delegate)
- 在ios中举个简单的protocol例子,关于两个类用协议方式传值。
- 【iOS开发】协议与委托 (Protocol and Delegate) 实例解析
- iOS开发 协议与委托(Protocol and Delegate)
- 【iOS开发】协议与委托 (Protocol and Delegate)
- iOS开发】协议与委托 (Protocol and Delegate) 实例解析
- 【iOS开发】协议与委托 (Protocol and Delegate) 实例解析
- iOS 委托Delegate和协议Protocol的理解和应用
- iOS 多线程编程<一、多线程实现方式>
- protocol-“委托”的实现
- 协议(protocol) & 委托(delegate)
- 协议(protocol)和委托(delegate)
- python 学习笔记
- Ubuntu编译Hadoop源码异常总结
- Java中关于HashMap的使用和遍历
- 怎么卸载Apache_pn服务-PHPnow使用问题
- Spark修炼之道(进阶篇)——Spark入门到精通:第一节 Spark 1.5.0集群搭建
- ios编程思想:委托实现方式1 - 协议方式(protocol)
- 使用Apache2服务器设置反向代理
- servlet是什么?
- 4412裸机程序之常用gcc/makefile/arm汇编指令
- [翻译]十条有用的 GO 技术
- 【iOS开发】CocoaPods下载、安装、更新、以及升级iOS9.0后源不可使用的解决方案
- PO/POJO/BO/DTO/VO的区别
- hdu4973A simple simulation problem. 线段树
- spring mvc 报错 expected at least 1 bean which qualifies as autowire candidate for this depend