block基础-1

作者: zl520k | 来源:发表于2018-07-04 09:58 被阅读0次

block块是在ios4开始,就出现了。block实质就是C语言的回调函数。block函数定义如下

void (^blockName)(int,int) = ^(int a,int b){};//void->返回值,blockName->block名字,(int,int)->block的参数,void (^blockName)(int,int) ->block声明,

^(int a,int b){};->block的定义,返回值和参数类型要一样。block能将代码变的简洁、清晰。block在开发中,当一个对象使用,就可以了。因为block对象的类归根揭底还是NSObject类。

block在开发当中,大多数都是这样使用的,例如typedef  void(^HttpResponseSuccess)(idresponse,BaseResponeModel*model);。很少在使用的时候,在声明,不使用typedef声明一个block块的。

在arc情况下,如果定义block为一个对象的时候,属性使用copy,但是使用strong也是一样,因为在arc情况下,copy和strong是一样的,只不过,之前习惯这样写成copy属性。

void (^blockName)(int,int) = ^(int a,int b){//处理逻辑};

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

    @autoreleasepool {

        void(^block1)(void)= ^(){ };//NSGlobalBlock---是在数据区分配

        int age =10;

        void(^block)(int,int) = ^(inta,intb){

            NSLog(@"%d,%d",a,b);

            NSLog(@"%d",age);

        };//NSMallocBlock--是在堆中分配,因为使用age的变量

        void(^block2)(void) = ^{

            NSLog(@"%d",age);

        } ;

        NSLog(@"%@======%@======%@",[block1 class],[block class],[^{

            NSLog(@"%d",age);

        }class]);//[^{NSLog(@"%d",age);}class]----NSStackBlock-->是在栈中分配

    }    return 0;

}

打印:__NSGlobalBlock__======__NSMallocBlock__======__NSStackBlock__

如果static  int age =10;或extern  int age =10;在block中只要使用age,就是在数据段分配了。__NSGlobalBlock__、__NSMallocBlock__、__NSStackBlock__都是class_t对象。

相关文章

  • BLOCK的页面传值

    (1)Block的基础语法: 1>Block的声明 void (^returnBlock)(NSString*te...

  • block基础-1

    block块是在ios4开始,就出现了。block实质就是C语言的回调函数。block函数定义如下 void (^...

  • Block的学习

    基础部分 一 重要概念: 1 闭包 2 block 二 block的用法 1 block的声明,定义,调用: 声明...

  • Block基础+实践

    一.目录 Block的定义. 一. Block的基础 1. Block的定义? Block是一种特殊的数据类型,它...

  • OC基础-Block(1)

    OC基础- blockBlock:本质:一个OC对象,一个封装了函数调用以及函数调用环境的OC对象 先定义一个简单...

  • go语言搭建一条简易的区块链-01-区块和链的基础结构

    先定义块和链的基础结构,目前不包含交易、账户等信息。 *block block.go包含的功能:1. block的...

  • i0S-UIView动画(基础动画+Block动画)

    UIView基础动画 UIView基础动画Api介绍: 使用例子1: 使用例子2: UIView-Block动画 ...

  • iOS Block 部分一

    主要讲解 Block 的底层实现原理; Block部分一Block部分二Block部分三Block知识点总结 基础...

  • Block相关(二)

    前言,在上篇文章Block相关(一),中介绍了Block相关的基础知识,包括Block介绍、基础语法、使用情况等。...

  • iOS笔记--Block相关知识

    Block介绍(一)基础Block介绍(二)内存管理与其他特性block介绍(三)揭开神秘面纱(上)block介绍...

网友评论

    本文标题:block基础-1

    本文链接:https://www.haomeiwen.com/subject/eyuayftx.html