回调的代理(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
时间: 2024-10-27 04:27:26

回调的代理(delegate)实现的相关文章

Objective - C 小谈:代理delegate的使用法则

先搞清楚谁是谁的代理(delegate) 定义代理协议,协议名称的命名规范:控件类名 + Delegate 定义代理方法 代理方法一般都定义为@optional 代理方法名都以控件名开头 代理方法至少有1个参数,将控件本身传递出去 设置代理(delegate)对象  (比如myView.delegate = xxxx;) 代理对象遵守协议 代理对象实现协议里面该实现的方法 在恰当的时刻调用代理对象(delegate)的代理方法,通知代理发生了什么事情 (在调用之前判断代理是否实现了该代理方法)

代理Delegate的小应用(代理日期控件和下拉框)

前言 在平时关于表格一类的的控件使用中,不可避免需要修改每个Item的值,通过在Item中嵌入不同的控件对编辑的内容进行限定,然而在表格的Item中插入的控件始终显示,当表格中item项很多的时候,会影响表格的美观和用户的体验.此时Delegate代理就派上了用场,通过Delegate可以使得Item的控件在编辑状态才显示,提高了用户的体验满意度. 效果展示 1.展示状态: 2.编辑状态   设计思路 这类效果的实现主要使用了QItemDelegate类,QItemDelegate类为数据项It

协议protocol和代理delegate的使用

这里的协议是独立的,不再类里面,所以每个类的头文件都要引入#import "MarryProtoco.h"头文件.. 首先新建一个协议 Protocol:MarryProtoco 里面写代理人要执行的方法,或者可选方法 #import <Foundation/Foundation.h> @protocol MarryProtoco <NSObject> //代理人中必须要执行的 . //做饭 - (void)cook; //洗衣服 - (void)washClo

jQuery中hover和blur使用代理delegate无效的解决方法

今天就遇到了这样的小问题: $(document).ready(function(){ $('.status_on').hover(function(){ $(this).html('点击禁用'); $(this).css('color','red'); },function(){ $(this).html('已激活'); $(this).css('color','green'); });}); 但是当需要触发hover的元素是js后来生成的时候,hover是无效的.于是第一反应是想到用dele

IOS之代理(delegate)的开发模式

1.代理模式在ios开发使用的很多比如uitableview,uicollectioin的代理方式,用的太多,表面的意识就是,委托别人做事,帮助viewcontroller去解决一系列问题的,直接上代码了: 在ChilderViewController.h: #import <UIKit/UIKit.h> @protocol ChilderViewControllerDlegate <NSObject> -(void)getColor:(UIColor *)color; @end

javascript事件代理(delegate)原理解析

什么是事件代理?首先得知道什么是事件,并且弄清楚事件流,才能真正明白事件代理原理. 一.什么是事件? javascript与HTML之间交互就是通过事件实现的,事件就是文档或浏览器窗口中发生的一些特定的交互瞬间.如onload.onclick.onmouseup.onmousedown... . 二.事件流 DOM(文档对象模型)结构是一个树型结构,当一个HTML元素产生一个事件时,该事件会在元素结点与根结点之间的路径传播,路径所经过的结点都会收到该事件,这个传播过程可称为DOM事件流. 因为历

代理delegate到lamda的演化示例

using System; namespace ConsoleApp1 { public class Program { private delegate int Add(int a, int b); public static void Main(string[] args) { Add add1 = new Add(AddPlus); int z = add1(2, 6); Console.WriteLine(z); add1 = new Add(delegate (int a, int b

代理Delegate在写页面逻辑的使用

block使用的场景是: 1.有关使用代码来写相应的View而不是xib或者storyboard的时候,我们经常需要用到按钮等控件,我们一般可以使用代理或者b'lock这两种方式来解决. 先看看代理的使用: //按钮的触发事件,相应的容器方法 reSetPassword [_serviceLeft addTarget:self action:@selector(reSetPassword) forControlEvents:UIControlEventTouchUpInside]; 下面是相应的

第三回《iOS之代理Delegate》

====================================================================== |   转载须注明博客地址:http://www.cnblogs.com/devappnow            | |   请尊重原创.尊重别人的劳动成果.如果读者你觉得有帮助.也可以通过任意的方式给博主鼓励(推荐,评论,邮件等等).    | ======================================================