博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
block的回调作用
阅读量:7074 次
发布时间:2019-06-28

本文共 1181 字,大约阅读时间需要 3 分钟。

hot3.png

//场景:第二级界面想要将它的内容显示第一级界面上

//分析:第二级界面想要显示自己的内容,但是自己做不到,需要第一级界面来帮他完成。

//三要素:              协议代理     block

//委托:第二级界面          1          3

//协议:显示指定内容         2         2

//代理:第一级界面          3          1


FirstView.h

#import <Foundation/Foundation.h>

//- (void)showData:(NSString *)str;

FirstView : NSObject

//直接拥有协议方法

@property(nonatomic, copy) void (^showData)(NSString * str);


FirstView.m

#import "FirstView.h"

@implementation FirstView


SecondView.h

#import <Foundation/Foundation.h>

@interface SecondView : NSObject

//拥有代理(拥有一个有能力帮他做事情的对象)

//在适当的时候让有能力帮他做事情对象去做事

- (void)askToShowData:(NSString *)str;

@end


SecondView.m

#import "SecondView.h"

#import "FirstView.h"

@implementation SecondView

- (void)askToShowData:(NSString *)str{

    //在委托需要做事情的时候,就创建一个有能力帮他做事的对象

    FirstView * first = [[FirstView alloc] init];

    

    //代理创建完后不要忘记去实现block代码段

    [first setShowData:^(NSString * tstr) {

        

        NSLog(@"%@", tstr);

        NSLog(@"%@", str);

    }];

    

    

    //让代理去帮忙做事

    //调用block的时候,要保证已经使用代码段给block赋值了

    first.showData(str);

    

}

@end


main.m

#import <Foundation/Foundation.h>

#import "SecondView.h"

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        

        SecondView * second = [[SecondView alloc] init];

        

        [second askToShowData:@"呵呵"];

    }

    return 0;

}

转载于:https://my.oschina.net/luhoney/blog/649510

你可能感兴趣的文章
没有网站,靠什么来吸引近9亿的互联网用户
查看>>
如何利用C++搭建个人专属的TensorFlow
查看>>
阿里云和腾讯云搭建hadoop
查看>>
Vue命令行工具vue-cli
查看>>
SpringCloud(Finchley版)6 - Config-Client
查看>>
SpringBoot-配置日志logback.xml
查看>>
PHP $_SERVER详解
查看>>
平台化技术:从C/S到B/S
查看>>
6.4 xz压缩工具
查看>>
11.18 Apache用户认证
查看>>
23种设计模式总结(三)
查看>>
Webbench压力测试
查看>>
登陆系统的两个界面以及忘记root密码怎么办
查看>>
checkbox功能实现之全选、反选、取消
查看>>
pear安装模块出现报错——could not extract the package.xml
查看>>
第十七天 while 循环
查看>>
powershell最常用的命令之(一)
查看>>
Log4j.properties配置详解
查看>>
基于jQuery免费开源图片裁切插件 - Croppic
查看>>
jdk 安装配置
查看>>