1

ブロックの内外で同じ名前の変数を使用する場合、変数のスコープはどうなるのだろうか。例はそれ自体から話します:

NSSet *test = [NSSet setWithObjects@"Test"];

void (^onComplete)(id) = ^(NSSet *test) {

    // do we see the variable define as an argument of the block or the variable define outside of the block?
    NSSet *test2 = test;

}

NSSet *test3 = test;

ここで競合の可能性はありますか?

4

1 に答える 1

2

ローカル変数は外側のスコープを隠します。したがって、ブロック内testはパラメータであり、外部変数ではありません。

于 2013-03-06T19:35:47.133 に答える