如果代码用函数中的花括号括起来会发生什么?

时间:2011-04-21 09:20:21

标签: objective-c

我是Objective C的新手并且在代码中注意到我已经读到有时代码块会被包含在函数内的花括号中。

这是做什么的?

例如......

- (BOOL) application: (UIApplication *) application didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {    

  // Load config, available via macro CONFIG
  {
    NSString *path = [[NSBundle mainBundle] pathForResource: @"config" ofType: @"plist"];
    NSData *data = [[NSData alloc] initWithContentsOfFile: path];
    self.config = [NSPropertyListSerialization propertyListWithData: data
                                                            options: NSPropertyListImmutable
                                                             format: nil
                                                              error: nil];
    [data release];
  }

  // snip

}

2 个答案:

答案 0 :(得分:10)

那叫做“范围”......

在大括号内声明的变量只存在于大括号内。

想象一下:

int main( void )
{
  int my_var = 3;
  {
     int my_var = 5;
     printf( "my_var=%d\n", my_var );
  }

  printf( "my_var=%d\n", my_var );

  exit( 0 );
}

这将打印:

my_var=5
my_var=3

答案 1 :(得分:5)

这只是限制块中声明的变量范围的一种方法。在您的示例路径中,数据将不会在花括号外显示。