Objective-c中的Block(块)详解(二)

2015-01-22 21:34:44 · 作者: · 浏览: 141
mparetor, Result ==> -1. use Comparetor, Result ==> 123. use Comparetor, Result ==> 1.

块使用上下文变量

块代码也可以使用其所在范围的变量,但是块代码中不能修改该变量的值或者引用, 例如块所在函数的变量、类的成员变量。如果需要在块代码中修改变量值,可以使用__block定义变量。示例如下 :

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        // 使用上下文变量
        int valueInMain = 222 ;
        
        void (^printValue)() = ^() {
            NSLog(@"使用函数上下文的变量(不能修改) : %i.", valueInMain) ;
        } ;
        printValue();
        
        __block int anInteger = 42;
        void (^testBlock)(void) = ^{
            anInteger = 100;
            NSLog(@"使用__block声明的变量(可以修改) : %i", anInteger);
        };
        testBlock();
        
    }
    return 0;
}

输出如下 :

使用函数上下文的变量(不能修改) : 222.
使用__block声明的变量(可以修改) : 100