iOS这种在Objective-C中构建和返回对象的方式的名称

时间:2014-02-20 13:37:54

标签: ios objective-c scope block

我试图找出这种编码风格的名称,它是一个内联块吗?内联范围?什么?当编译器遇到其中一个时,编译器会创建什么......

- (UIView *)createMyView {
      return
        ({
           UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 0)];
            /* set some stuff up on the view;
   */     
           view;

        });
}

我问,因为我们在崩溃日志中收到了很多cxx_destruct调用,其行号大于文件的实际大小。我想知道这种编码方式是否会为其构建的方式添加一些奇怪的东西。

1 个答案:

答案 0 :(得分:4)

这是一个“声明表达”,这是一个GCC功能(Clang也理解), 见http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html

  

括在括号中的复合语句可能显示为   GNU C中的表达式。这允许您使用循环,开关和本地   表达式中的变量。

表达式的值是复合语句中最后一个子表达式的值。