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

Lee*_*ert 5 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

}
Run Code Online (Sandbox Code Playgroud)

Mac*_*ade 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 );
}
Run Code Online (Sandbox Code Playgroud)

这将打印:

my_var=5
my_var=3
Run Code Online (Sandbox Code Playgroud)

  • 好一个Macmade.还有一件事,范围不是客观C特有的,它也存在于C中. (2认同)

Tom*_*rys 5

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