block小结--02 block的种类;

原创 2016年05月31日 20:00:50

验证block是属于哪类的block;

--------------------------------------------------------------------------------------------------------------------

NSGlobalBlock 

--------------------------------------------------------------------------------------------------------------------

验证:不引用外部的变量就是globalBlock

        //有参数,有返回值------num,num1可以省略;

        int(^blo3)(int num,int num1 ) = ^(int num1,int num2){

            NSLog(@"blo3内部返回的值 %d",(num2+num1)/2);

            return num1 + num2;

        };

        NSLog(@"%d",blo3(30,40));

        

        NSLog(@"%@",blo3 );  //<__NSGlobalBlock__: 0x100002110>


--------------------------------------------------------------------------------------------------------------------

2016-05-31 19:15:58.721 总结--block[6054:847379] blo3内部返回的值 35

2016-05-31 19:15:58.722 总结--block[6054:847379] 70

2016-05-31 19:15:58.722 总结--block[6054:847379] <__NSGlobalBlock__: 0x100002110>


--------------------------------------------------------------------------------------------------------------------

__NSMallocBlock__ 

--------------------------------------------------------------------------------------------------------------------


        __block int a = 10;

        int(^blo3)(int num,int num1 ) = ^(int num1,int num2){

            NSLog(@"blo3内部返回的值 %d",(num2+num1)/2);

            a = 20;

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

            return num1 + num2;

        };

        NSLog(@"%d",blo3(30,40));

        

        NSLog(@"引用外部变量int a之后-----%@",blo3 );//引用外部变量int a之后-----<__NSMallocBlock__: 0x100601270>



--------------------------------------------------------------------------------------------------------------------

__NSStackBlock__ 

--------------------------------------------------------------------------------------------------------------------

        int a = 10;

        

        NSLog(@"stack-----%@",^{

            NSLog(@"%d",a);

        });

--------------------------------------------------------------------------------------------------------------------

       //stack-----<__NSStackBlock__: 0x7fff5fbff6d8>


--------------------------------------------------------------------------------------------------------------------

--------------------------------------------汇总------------------------------------------------------------------------


        

        NSLog(@"gloal-----%@",^{

            NSLog(@"aaa");

        });

        

       int a = 10;

        void (^block5)() = ^(){

            NSLog(@"%d",a);

        };

        

        NSLog(@"malloc----%@",block5);

        

        

        NSLog(@"stack-----%@",^{

            NSLog(@"%d",a);

        });


--------------------------------------------汇总------------------------------------------------------------------------

2016-05-31 19:55:36.423 总结--block[6228:862567] malloc----<__NSMallocBlock__: 0x1002005c0>

2016-05-31 19:55:36.423 总结--block[6228:862567] gloal-----<__NSGlobalBlock__: 0x1000021c0>

2016-05-31 19:55:36.423 总结--block[6228:862567] stack-----<__NSStackBlock__: 0x7fff5fbff6d8>








三种Block 知识

一:基本定义 /*初步上式block定义的一些理解和解释,接下来会详解: *block名为myBlock,结合C的函数指针,myBlock为block体的指针,指向block体的入口地址 ...
  • allanGold
  • allanGold
  • 2016年04月08日 13:53
  • 1169

iOS block种类和切换

block 分为三种 NSGlobalBlock,NSStackBlock, NSMallocBlock。 NSGlobalBlock:类似函数,位于text段;NSStackBlock:位于栈...
  • intheair100
  • intheair100
  • 2015年10月09日 17:54
  • 750

Block从简单到高级的使用,以及项目中经常使用的场景

Block从简单到高级的使用,以及项目中经常使用的场景 一、Block的简单使用        使用Block的三个步骤:1.定义Block变量;2.定义Block(即创建block代码块)3.调用...
  • u014536527
  • u014536527
  • 2015年12月23日 00:03
  • 4543

你真的理解__block修饰符的原理么?

开篇自测在本文的开头,提出两个简单的问题,如果你不能从根本上弄懂这两个问题,那么希望你阅读完本文后能有所收获。 为什么block中不能修改普通变量的值? __block的作用就是让变量的值在block...
  • abc649395594
  • abc649395594
  • 2015年07月27日 19:26
  • 9484

Block小结

Block小结一、block的类型 GlobalBlock StackBlock MallocBlock 二、生成条件GlobalBlcok: 如果一个block没有引用任何外部变量,此时block...
  • raopc
  • raopc
  • 2015年12月15日 16:57
  • 138

block小结

先说,带参数的  返回值
  • ralbatr
  • ralbatr
  • 2014年07月24日 11:42
  • 444

block 小结

代码块本质上是和其他变量类似。不同的是,代码块存储的数据是一个函数体。使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值。 脱字符(^)是块的语法标记。按照我们熟悉的参数语法规约所...
  • luntaiqinghua
  • luntaiqinghua
  • 2015年05月23日 16:21
  • 156

Object-C高级编程读书笔记(2)——Block的实质

按照OC高级编程书中所说,所谓Block实质就是Object-C对象。 如何理解这句话呢?应该从OC的类对象所拥有的特征入手,如果Block同样拥有这些特征,那么Block当然也就是OC的对象。 Ob...
  • u013378438
  • u013378438
  • 2016年03月08日 23:10
  • 727

iOS block探究(二): 深入理解

你要知道的block都在这里转载请注明出处 http://www.jianshu.com/p/b6a675a7a4fa上一篇文章iOS block探究(一):基础详解介绍了block的基本原理和使用方...
  • u014205968
  • u014205968
  • 2017年03月21日 19:13
  • 715

代理和block各自的优缺点和使用场景

block 和 delegate 都可以通知外面。block 更轻型,使用更简单,能够直接访问上下文,这样类中不需要存储临时数据,使用 block 的代码通常会在同一个地方,这样读代码也连贯。dele...
  • ios_xumin
  • ios_xumin
  • 2017年04月20日 13:41
  • 466
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:block小结--02 block的种类;
举报原因:
原因补充:

(最多只允许输入30个字)