码迷,mamicode.com
首页 > 其他好文 > 详细

//使用block注意事项

时间:2015-09-05 12:34:50      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

#import <Foundation/Foundation.h>

typedef int(^block)(int, int);
int d = 10;
int main(int argc, const char * argv[])
{
    
    
    
    //1、block和局部变量
    //局部变量在栈区
    //block中的变量只能使用 不能修改  在内存中的堆区中复制一份
    int c = 10;
    NSLog(@"c = %d", c);
    NSLog(@"c address = %p", &c);
    
    int (^b)(int, int) = ^int(int a, int b){
        NSLog(@"c = %d", c);
        NSLog(@"c address = %p", &c);
        return 0;
    };
     NSLog(@"%d",b(1, 2));
    
    //2.__block和局部变量
    //局部变量在栈区
    //block区域使用的变量在堆区
    __block int e = 10;
    NSLog(@"e = %d", e);
    NSLog(@"e address = %p", &e);
    
    int (^ee)(int, int) = ^int(int a, int b){
        e++;
        NSLog(@"e = %d", e);
        NSLog(@"e address = %p", &e);
        return 0;
    };
    NSLog(@"%d",ee(1, 2));
    
    //3、block和全局变量
    //全局变量在block中能够使用并且修改。
    //全局变量在内存的静态代码区
    //block块中的变量也在静态代码区 并且两个数的地址相同
    NSLog(@"d = %d", d);
    NSLog(@"d address = %p", &d);
    
    int (^b2)(int, int) = ^int(int a, int b){
        d++;
        NSLog(@"d = %d", d);
        NSLog(@"d address = %p", &d);
        return 0;
    };
    NSLog(@"%d",b2(1, 2));


//使用block注意事项

标签:

原文地址:http://my.oschina.net/zhangjie9142/blog/501286

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!