2014-05-12 27 views
1

參考this source code雙花括號的目的是什麼@autoreleasepool這是什麼C的雙花括號,Objective-C

int main(int argc, const char * argv[]) { 
    @autoreleasepool { 
     {{ 
      assert([EnumWith1ConstantSansExplicitValuesByLabel() count] == 1); 
      assert([[EnumWith1ConstantSansExplicitValuesByLabel() objectForKey:@"EnumWith1ConstantSansExplicitValues_Constant1"] isEqual:[NSNumber numberWithInt:0]]); 

      assert([EnumWith1ConstantSansExplicitValuesByValue() count] == 1); 
      assert([[EnumWith1ConstantSansExplicitValuesByValue() objectForKey:[NSNumber numberWithInt:0]] isEqual:@"EnumWith1ConstantSansExplicitValues_Constant1"]); 

      EnumWith1ConstantSansExplicitValues a = 0; 

      assert(EnumWith1ConstantSansExplicitValues_Constant1 == a); 
      assert([@"EnumWith1ConstantSansExplicitValues_Constant1" isEqualToString:EnumWith1ConstantSansExplicitValuesToString(a)]); 
      assert(EnumWith1ConstantSansExplicitValuesFromString(EnumWith1ConstantSansExplicitValuesToString(EnumWith1ConstantSansExplicitValues_Constant1), &a)); 
      assert(EnumWith1ConstantSansExplicitValues_Constant1 == a); 

      a++; 
      assert([@"<unknown EnumWith1ConstantSansExplicitValues: 1>" isEqualToString:EnumWith1ConstantSansExplicitValuesToString(a)]); 
      assert(!EnumWith1ConstantSansExplicitValuesFromString(@"foo", &a)); 
     }} 
     {{ 
      assert([EnumWith1ConstantSansExplicitValuesTrailingCommaByLabel() count] == 1); 
     }} 
    ... 
    printf("success\n"); 
    return 0; 
} 
+0

可能會有所幫助。 http://stackoverflow.com/questions/6251160/what-is-the-meaning-of-double-curly-braces-initializing-a-c-struct – User42

+2

@ User42不,這沒有聲明一個結構。 – Kevin

+0

回答這個問題:大括號是什麼意思?然後回答這個問題:花括號內的花括號是什麼意思?這是第一個答案的一個顯而易見的結果。 @autoreleasepool與它無關。 – gnasher729

回答

2

沒有什麼特別的雙曲花括號*。它只是被作者用來在相當長的方法中邏輯分隔代碼段。

*:超出聲明範圍塊的單花括號行爲。