我可以将{} -braces放在Objective-C中的任何位置吗?

时间:2011-09-15 08:19:02

标签: objective-c

编码Objective-C时,是否可以做某事。像:

{
  UIView *viewOne = [[UIView alloc] init];
  // do stuff with view
  [self addSubview:viewOne];
  [viewOne release];
} //View 1

{
  UIView *viewTwo = [[UIView alloc] init];
  // do stuff with view
  [self addSubview:viewTwo];
  [viewTwo release];
} //View 2

当我曾经做过类似的事情时,XCode不抱怨并且它在iOS 4.3.3上运行。 我的问题是,如果这使我的代码与iOS 3.1.3或其他东西不兼容,因为这看起来像我可能正在使用的块。 我想将它主要用于代码可读性和折叠。

4 个答案:

答案 0 :(得分:1)

您在那里所做的就是创建单独的范围。第一个范围内声明的任何内容都不可用于第二个范围。

这是完全合法的C(因为Objective-C只是C的严格超集,它也很好)。

我已经在很多项目中看到了它。但是,我自己从未使用它,因为它可以被视为一种分离方法的一些方式,这种方法并不特别相关,可能表示代码质量很差 - 而不是我说你的代码很差!

这些也不是C块,就像在“闭包”中一样,C块看起来像

^{
    //code
}

这是最基本的形式。

答案 1 :(得分:1)

这是C的特征已经存在了很长时间。它被称为“复合语句”或“块语句”,但它与Apple最近推出的“块”扩展无关。它只是一种对多个语句进行分组并为变量建立范围的方法。

答案 2 :(得分:0)

使用花括号完全没问题就像你的可读性一样。编译器不会抱怨:P

答案 3 :(得分:0)

是的,这是可能的。但相反,这会创建一个方法:

-(void)addView:(UIView*)view{
...
} 

它更具可读性和清晰度。此外,没有代码重用。