block小结--01

原创 2016年05月31日 19:24:15

1.block不能修改局部变量的值,要想修改,必须在局部变量前加一个__block

    1.1  __block对象在block中可以被修改,可以 重新赋值;

    1.2  block内部和外部同名的变量不是同一个地址的变量,地址发生了改变;

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

        __block int a = 10;

         NSInteger b = 30;

        NSLog(@"1----a  block外的地址:%p",&a);

        NSLog(@"2----b =  block外的地址:%p",&b);

        void(^blo1)() = ^{

            a = 20;

            NSLog(@"5----a = %d",a);

            NSLog(@"6----a  block内的地址:%p",&a);

            NSLog(@"7----b =  block内的地址:%p",&b);

            NSLog(@"8----b = %ld",b);

        };

        NSLog(@"3----a  block外的地址:%p  --%d",&a,a);

        NSLog(@"4----b  block外的地址:%p  --%ld",&b,(long)b);


        blo1();

        NSLog(@"9----a  block外的地址:%p  --%d",&a,a);

        NSLog(@"10----b  block外的地址:%p  --%ld",&b,(long)b);


        //有参数,无返回值;

        void(^blo2)(int num1,int num2) = ^(int num1,int num2){

            NSLog(@"%d",num1 +num2);

            NSLog(@"11-----%d",a);

            NSLog(@"12-----%ld",b);

            NSLog(@"13------a  block外的地址:%p",&a);

            NSLog(@"14------b =  block外的地址:%p",&b);


        };

        blo2(10,20);

        NSLog(@"15------a  block外的地址:%p",&a);

        NSLog(@"16------b =  block外的地址:%p",&b);


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

2016-05-31 18:52:22.043 --block[5906:837000] 1----a  block外的地址:0x7fff5fbff7a8

2016-05-31 18:52:22.044 --block[5906:837000] 2----b =  block外的地址:0x7fff5fbff788

2016-05-31 18:52:22.044 --block[5906:837000] 3----a  block外的地址:0x1005004d8  --10

2016-05-31 18:52:22.044 --block[5906:837000] 4----b  block外的地址:0x7fff5fbff788  --30

2016-05-31 18:52:22.044 --block[5906:837000] 5----a = 20

2016-05-31 18:52:22.045 --block[5906:837000] 6----a  block内的地址:0x1005004d8

2016-05-31 18:52:22.045 --block[5906:837000] 7----b =  block内的地址:0x100500028

2016-05-31 18:52:22.045 --block[5906:837000] 8----b = 30

2016-05-31 18:52:22.045 --block[5906:837000] 9----a  block外的地址:0x1005004d8  --20

2016-05-31 18:52:22.045 --block[5906:837000] 10----b  block外的地址:0x7fff5fbff788  --30

2016-05-31 18:52:22.045 --block[5906:837000] 30

2016-05-31 18:52:22.045 总结--block[5906:837000] 11-----20

2016-05-31 18:52:22.045 总结--block[5906:837000] 12-----30

2016-05-31 18:52:22.046 总结--block[5906:837000] 13------a  block外的地址:0x1005004d8

2016-05-31 18:52:22.046 总结--block[5906:837000] 14------b =  block外的地址:0x100700028

2016-05-31 18:52:22.046 总结--block[5906:837000] 15------a  block外的地址:0x1005004d8

2016-05-31 18:52:22.046 总结--block[5906:837000] 16------b =  block外的地址:0x7fff5fbff788

2016-05-31 18:52:22.046 总结--block[5906:837000] blo3内部返回的值  35

2016-05-31 18:52:22.047 总结--block[5906:837000] 70

Program ended with exit code: 0



http://blog.sina.com.cn/s/blog_8c87ba3b0101m599.html#cmt_2545676此里面的block知识我还在消化中;

Typedef用法小结01

  • 2017年02月05日 17:39
  • 44KB
  • 下载

iOS项目内block的使用小结(1)

单位项目中block用的非常普遍,导致我这种一瓶子不满半瓶子晃荡的选手很是忧伤,这几天研究这个感觉有了点收获,赶紧记下来,怕到时忘了,给自己留个印象。 block其实就是一段代码块,一个函数,一个方...

CSS中多列块的实现小结 display : inline-block 内联块

最近在折腾HTML5和CSS3    -->   示例页面 在做网页菜单的时候,最上面需要加一行工具栏,并排放的,那我想弄四个等宽的box,然后并排放,这样以后想扩展也很好扩展。 刚开...
  • misol
  • misol
  • 2011年11月03日 19:40
  • 2716

Block 使用的小结 有转的成分

block 简介 block 作为在 C语言的扩展,并不是高新技术,和其他语言的壁报或 lambda 表达式是一回事.需要注意的是由于 Objective-C在 iOS 中不支持 GC机制,使用 b...

===项目一day01:EasyUI【静态页面创建】手写基础小结【后台界面搭建过程从0到有的过程】(已补全)

======后台界面搭建过程从0到有的过程。 ===博客目的: ====素材提供。不必自己找====这里主要复习 思想 和EasyUI 基础语法 1、布局 ui01_layout.html ...

iOS学习之路01 - Block

Block 创建的三种形式 没有参数,没有返回值的block void (^myBlock1))() = ^{}; myBlock1(); 有参数,没有返回值的block void (^my...

Android 开发小结01

1.首先是安卓平台的搭建,先到谷歌安卓首页去下载(可能需要翻墙)android sdk包,下过来的几百K的是一个在线安装下载器,通过它勾选各种安卓版本环境(可能需要6~10小时),也可以使用他人已经下...

jQuery学习--Chapter01小结(jQuery介绍)

1.jQuery简介 Jquery是继prototype之后又一个优秀的Javascript框架。它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safa...

iOS每日小结-01续

· 1.4数据类型补充: 1)字符型:OC中每个字符只占一个字节,因此,单个字符不能用于保存中文。 2)转义字符: 3)★反斜线的使用:若在字符串中使用反斜线(\)如:@"c:\新建文件夹"...

01 block的用法

01 block的用法Tags: Objective-C1.1 块的定义、块变量的定义块的定义的基本格式如下: ^(形参类型1 形参1, 形参类型2 形参2, ...) { //块执行体 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:block小结--01
举报原因:
原因补充:

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