回调的代理(delegate)实现
2024-08-22 08:51:10
1、CoreManage.h
#import <Foundation/Foundation.h> @protocol SampleProtocol; //声明核心类的属性和方法
@interface CoreManage : NSObject @property(nonatomic,assign) id<SampleProtocol> delegate; - (void)doMainWork; @end //声明协议中的接口函数
@protocol SampleProtocol <NSObject> @required
- (void)innerTaskCallBack:(int) innerTaskSerialNo; @optional
- (void)resultDisplayCallBack:(NSString *)backInfo; @end
2、CoreManage.m
#import "CoreManage.h" @implementation CoreManage @synthesize delegate=_delegate;
- (void)doMainWork
{
NSLog(@"核心类完成工序0");
NSLog(@"核心类完成工序1");
[self.delegate innerTaskCallBack:2];//工序2通过外部类回调函数完成
NSLog(@"核心类完成工序3");
[self.delegate resultDisplayCallBack:@"成功"];//通过外部类回调函数显示任务完成结果
} @end
3、OuterClass.h
#import <Foundation/Foundation.h>
#import "CoreManage.h" @interface OuterClass : NSObject<SampleProtocol> - (void)run; @end
4、OuterClass.m
#import "OuterClass.h" @implementation OuterClass - (void)run
{
CoreManage *coreManage=[[CoreManage alloc] init];
coreManage.delegate=self;
[coreManage doMainWork];
} //回调函数1
- (void)innerTaskCallBack:(int) innerTaskSerialNo{
NSLog(@"外部类的回调函数,完成工序%d",innerTaskSerialNo);
} //回调函数2
- (void)resultDisplayCallBack:(NSString *)backInfo{
NSLog(@"外部类的回调函数,输出完成结果:%@",backInfo);
} @end
最新文章
- 虚拟树Demos\Minimal 简单的例子
- sqlServer 2008修改字段类型和重命名字段名称的sql语句
- VS2013配置WTL91_5321_Final
- node socket onmessage
- checkbox的相关知识点
- JVM ,JIT ,GC RUNTIME 解析
- Java基础知识强化之集合框架笔记73:如何选择使用哪种集合
- TCP头分析+面试题
- CentOS7 离线安装gcc/pcre-devel/openssl-devel/zlib-devel
- 常用http响应报文分析
- Fu+ 后台管理 (Thinkphp)
- kubernetes进阶(03)kubernetes的namespace
- Java笔记--引用类型的使用
- 为什么移动构造要使用noexcept
- Spring资源加载器抽象和缺省实现 -- ResourceLoader + DefaultResourceLoader(摘)
- git常用的命令行
- fastTime从后台传过来显示格式的处理
- 【vim】保存文件没有权限 :w !sudo tee %
- openssl之EVP系列之13---EVP_Open系列函数介绍
- Axis2发布服务,支持Tomcat和Weblogic的SSHWeb项目部署