zoukankan      html  css  js  c++  java
  • 回调的代理(delegate)实现

     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
  • 相关阅读:
    Maven
    Mybatis
    WinDbg的安装、配置和功能(转发)
    gRPC —— gRPC 基础: C#(待续)
    gRPC —— 通讯协议
    gRPC —— 安全认证
    gRPC —— 概念
    gRPC —— 概览
    grpc和protocol buffer介绍&实例(转载)
    protocol buffers ——git 源码
  • 原文地址:https://www.cnblogs.com/changeUniversal/p/4638212.html
Copyright © 2011-2022 走看看