2011-04-21 9 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

相關問題