zoukankan      html  css  js  c++  java
  • 闭包(block)

    block主要解决反向传值和传值问题

    1.block申明的公式       返回值类型 (^名字)(参数列表);

    2.block实现的公式       名字= ^(参数列表){};

    3.局部变量                  定义一个图片的名字的block

    void (^imageNameBlock)(NSString *imageName);//申明

    __block UIImage *image; //iamge == nil 如果想修改外部变量的值 需添加__block修饰  也就是说如果要在block内部改变外部变量的状态时,需要使用__block修饰

    4.实现block

    imageNameBlock = ^(NSString *imageName){//实现

            image = [UIImage imageNamed:imageName];

            self.view.backgroundColor = [UIColor colorWithPatternImage:image];

        };

    5.调用block

    imageNameBlock(@"photo.png");//调用

     

    反向传值:

    1.在需要传值的类里面写block,即声明

    @property (nonatomic,copy)void (^block)(NSString *content);//block是分配在栈里面的,不需要程序员管理内存

    2.需要接收值的地方实现block

     NextViewController *nextView = [[NextViewController alloc]init];

        nextView.block = ^(NSString *content){

            NSLog(@"%@",content);

            labelTextBlock(content);

        };

    3.在需要传送值的地方  调用block

    block(@"sfasfaklgjgjkdsjkns");

     

     

     

    为了更好点交流和学习,请大家在参阅博客后,留下你的疑问和宝贵意见。谢谢!!!!
  • 相关阅读:
    文件系统之磁盘配额
    mysql之基础操作
    mysql-两种方式安装
    文件系统之parted 分区
    JDK1.7配置及测试
    ASP.NET中处理自定义错误的最佳方式
    C#使用System.Data.SQLite操作SQLite
    C#判断ip地址是否ping的通
    C#的WinForm中制作饼状图和柱状图
    使用.net(C#)发送邮件学习手册(带成功案例)
  • 原文地址:https://www.cnblogs.com/fshmjl/p/fshmjl.html
Copyright © 2011-2022 走看看