block小结--01

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知识我还在消化中;

阅读更多
个人分类: OC基础总结
下一篇block小结--02 block的种类;
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭