Objective-c中的curl大括号

注意:我的问题是在检查了这个问题及其答案之后。

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

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{}有什么关系吗?

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

不,他们甚至都不相关。 它们都与@autoreleasepool – 花括号的这种用法是打开新范围的简单C方式。

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

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

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

@autoreleasepool {}块类似于安静,但也在开头声明了一个自动释放池,并在结尾处将其耗尽,因此从内存占用的角度来看可能会更好,因为在退出时所有自动释放的对象都将被释放那个范围。