2011-04-21 40 views
5

我是新来的目标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 

} 

回答

5

这只是限制了块声明的变量的作用域的方式。在您的示例路径中,数据在大括号之外将不可见。

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 
+2

好一个Macmade。还有一件事,范围并不是特定于目标C,它也存在于C中。 – Krishnabhadra 2011-04-21 09:30:42

相关问题