我试图找出这种编码风格的名称,它是一个内联块吗?内联范围?什么?当编译器遇到其中一个时,编译器会创建什么......
- (UIView *)createMyView {
return
({
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 0)];
/* set some stuff up on the view;
*/
view;
});
}
我问,因为我们在崩溃日志中收到了很多cxx_destruct调用,其行号大于文件的实际大小。我想知道这种编码方式是否会为其构建的方式添加一些奇怪的东西。
答案 0 :(得分:4)
这是一个“声明表达”,这是一个GCC功能(Clang也理解), 见http://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html:
括在括号中的复合语句可能显示为 GNU C中的表达式。这允许您使用循环,开关和本地 表达式中的变量。
表达式的值是复合语句中最后一个子表达式的值。