//main.m

//
//  main.m
//  回调
//
//  Created by hehe on 15/9/10.
//  Copyright (c) 2015年 wang.hehe. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Employee.h"
#import "Company.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        //创建出公司对象
        Company *company = [[Company alloc] init];
        //创建员工对象
        Employee *emp = [[Employee alloc]init];
        
        //设定代理关系
        company.emp = emp;
        //动员
        [company doWork];
    }
    return 0;
}
//Employee.h
/*当商品销售完这个条件满足时候,就需要调用block,它对应的代码
 在委托方设定实现回调*/

#import <Foundation/Foundation.h>

@interface Employee : NSObject
//有一个block类型的属性,通过它实现回调
//block设置为属性要求他的内存是copy
@property (nonatomic,copy)void (^block)();
- (void)sellProduct;
@end
//Employee.m
//
//  Employee.m
//  回调
//
//  Created by hehe on 15/9/10.
//  Copyright (c) 2015年 wang.hehe. All rights reserved.
//

#import "Employee.h"

@implementation Employee
- (void)sellProduct
{
    NSLog(@"销售商品");
    //当员工销售完商品,需要反馈告诉公司
    //回调
    self.block();
}
@end
//Company.h
/*
 公司
 委托方
 
 */

#import <Foundation/Foundation.h>
#import "Employee.h"

@interface Company : NSObject
//设定代理方的属性
@property (nonatomic,strong) Employee *emp;
//动员员工销售的方法
- (void)doWork;

@end
//Company.m
//
//  Company.m
//  回调
//
//  Created by hehe on 15/9/10.
//  Copyright (c) 2015年 wang.hehe. All rights reserved.
//

#import "Company.h"

@implementation Company
- (void)doWork
{
    //设定回调的代码
    //..就是一个声明..//
    self.emp.block = ^(){
        NSLog(@"我已经完成了销售任务");
    };
    //委托代理方(员工去销售)
    [self.emp sellProduct];

}
@end

block回调具体例子的更多相关文章

  1. 代码块(Block)回调一般阐述

    本章教程主要对代码块回调模式进行讲解,已经分析其他回调的各种优缺点和适合的使用场景. 代码块机制 Block变量类型 Block代码封装及调用 Block变量对普通变量作用域的影响 Block回调接口 ...

  2. NSTimer_Block封装定时器的target-action成Block回调

    前言 定时器NSTimer虽然简单易用,但是目标响应机制(target-action)这种方式很容易在代码中出现代码臃肿的情况,特别是在一个文件中有大量的代码,多个定时器的时候不方便调试,因此将NST ...

  3. iOS 键盘添加完成按钮,delegate和block回调

    这个是一个比较初级一点的文章,新人可以看看.当然实现这个需求的时候自己也有一点收获,记下来吧. 前两天产品要求在工程的所有数字键盘弹出时,上面带一个小帽子,上面安装一个“完成”按钮,这个完成按钮也没有 ...

  4. Objective-C中的Block回调模式

    在前面的博客中提到了Block的概念和使用方法,个人感觉Block最爽的用法莫过于在回调时用block.感觉比委托回调和目标方法回调用着要顺手,好不好用还得读者亲自用一下才知道.如果 读者之前用过SS ...

  5. Block回调

    •Block的定义   •Block.委托.通知.回调函数,它们虽然名字不一样,但是原理都一样,都是"回调机制"的思想的具体实现 •前面的代理模式的项目改为Block回调实现    ...

  6. UIAlertController——之Block回调

    iOS8.0之后出现的提示框 =.=,比自己去改block回调要好.

  7. 第十篇、自定义UIBarButtonItem和UIButton block回调

    // 自定义导航栏左边按钮 self.navigationItem.leftBarButtonItem = [JQBlockedBarButtonItem blockedBarButtonItemWi ...

  8. iOS很重要的 block回调

    刚刚进入ios开发行业,发现开发中要用到大量的block回调,由此可见它的重要性.学习它之前我也是网上找的资料,推荐这篇文章http://blog.csdn.net/mobanchengshuang/ ...

  9. 63.delegate回调 和block回调

    效果:viewController里面放置一个按钮和Lab,点击按钮进入oneViewController(delegate回调)或者BlockViewController(block回调),两者控制 ...

随机推荐

  1. MDF文件数据恢复

  2. Cocos2d-x——CocosBuilder官方帮助文档翻译3 动画

    Working with Animations 动画 You can use CocosBuilder for creating character animations, animating com ...

  3. Struts2 学习笔记 11 Result part2

    之前学习了result type 和global result 我们现在来说一下 1.Dynamic Result动态结果集.先来看一下小项目的目录 首页的两个链接访问user/user?type=1 ...

  4. [Angular 2] *ngFor

    heros.ts: import {Component} from "@angular/core"; const HEROES = [ {id: 1, name:'Superman ...

  5. 判断IE中iframe完美加载完毕的方法

    转: var iframe = document.createElement("iframe"); iframe.src = "http://www.planabc.ne ...

  6. stl 容器

    10.1.2.2容器的分类 序列式容器(Sequence containers) 每个元素都有固定位置--取决于插入时机和地点,和元素值无关. vector.deque.list  关联式容器(Ass ...

  7. debian下软件包管理方式总结

    linux最流行的包管理方式除了rpm之外就是debian的deb格式了.目前采用deb管理方式的主流操作系统主要有debian和ubuntu系列.和rpm包管理方式不同的是,虽然debian也有包含 ...

  8. android 读取串口数据的服务

    2016-09-1813:10:03 继承Service,定义抽象方法onDataReceived,子类通过实现抽象方法获取接收到数据的回调. package com.zrsoft.liftad.se ...

  9. javaweb学习总结四(反射技术)

    一:反射的概念 反射就是加载类,然后获取类的属性.方法.构造函数等. 二:加载类到内存(有硬盘字节码文件到内存) 三种加载类的方式: @Test // 测试加载类 public void test1( ...

  10. 关于VI&VIM的基本使用方法

    本文转载:http://www.cnblogs.com/itech/archive/2009/04/17/1438439.html vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法, ...