Objective-c中的卷曲大括号

时间:2012-09-20 07:18:50

标签: objective-c ios c curly-braces

注意:我的问题是在检查this及其答案后找出的。

在一些更大的方法中,有一段代码只能在一段时间内存活。一个例子:

1)我有一个很大的方法来设置我的UI:UILabel's大小,颜色,定位,UIView's手势识别器等。了解上述内容,做这样的事情是否有意义:

- (void)setUI
{
    //setting other UI elements
    {
        // Add the Swipe Gesture to the swipeUpView
        UISwipeGestureRecognizer *swipeGestureUp = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(animeViewWithSwipeGesture)];

        swipeGestureUp.direction = UISwipeGestureRecognizerDirectionUp;
        [_swipeUpView addGestureRecognizer:swipeGestureUp];
    }

    // setting other UI elements
}
  • 基于上面的例子,这是一种降低应用程序内存占用的有效方法吗?
  • @autoreleasepool{}有任何关系吗?

3 个答案:

答案 0 :(得分:2)

这只是普通的C语法。您可以像其他人提到的那样使用它来打开新的范围。这意味着(这是C特性)您可以再次使用相同的堆栈变量名称,因为它们位于不同的范围内。此外,您在该范围内声明的变量将无法被外部范围访问。

与内存占用无关,只与代码组织有关。

答案 1 :(得分:1)

  

基于上面的例子,这是一种降低应用程序内存占用的有效方法吗?

没有。他们甚至都不相关。它们都与@autoreleasepool无关 - 花括号的这种用法是打开新范围的简单方法。

答案 2 :(得分:0)

大括号的作用只是定义一个新范围,因此您可以定义与其他外部范围变量同名的新变量。

@autoreleasepool {}块类似于安静,但是在开头声明了一个自动释放池并在结尾处将它排干,所以从内存占用的角度来看可能更好,因为在那里声明的所有自动释放的对象都将是退出该范围时发布。