3

Objective-cプロジェクトで、次のラインコードを見て驚いた。

- (void)methodName
{
    ... some code...

    {
        ... some code
    }

    {
        ... some code
    }

}

内側のブラケットは何の略ですか?それらの前にステートメントがないようです。ありがとう

4

4 に答える 4

5

ブラケットは新しいスコープを作成します。スコープ内で定義された変数は、スコープの終了後は保持されません。私は個人的にこれを使用して、ロジックのビットを分離して読みやすくしています。

例 1

この例は、より狭く定義されたスコープ内でインスタンス化された変数へのアクセスの欠如を示しています。

-(void)blockTestA {
    int j = 25;

    {
        int k = 5;

        // You can access both variables 'j' and 'k' inside this block.
    }

    // You can only access the variable 'j' here.
}

例 2

この例は、新しいブロック スコープを作成することで、同じ名前の異なる変数を使用できるようにする方法を示しています。スコープの詳細については、こちらをご覧ください。

-(void)blockTestB {
    int j = 25;

    {
        int j = 5;
        NSLog(@"j inside block is: %i", j); // Prints '5'
    }

    NSLog(@"j outside of block is: %i", j); // Prints '25'
}
于 2012-08-01T14:01:24.060 に答える
3

それらはブロックスコープを作成します。これらのブロック内で宣言された変数は、ブロック外では使用できません。

于 2012-08-01T14:00:56.857 に答える
3

内側の括弧は、その中で宣言された変数のスコープを制限します。

于 2012-08-01T14:01:26.720 に答える
2
- (void)methodName
{
    ... some code...

    {
      int i;//the scope of i is within this block only
        ... some code
    }

    {
       int i;//the scope of i is within this block only
       ... some code
    }

}

お役に立てると思います。

于 2012-08-01T14:06:23.373 に答える