关闭

block小结--01

8人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:56次
    • 积分:20
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档