2014-05-12 26 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

没有什么特别的双曲花括号*。它只是被作者用来在相当长的方法中逻辑分隔代码段。

*:超出声明范围块的单花括号行为。