注意:我的问题是在检查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{}
有任何关系吗?答案 0 :(得分:2)
这只是普通的C语法。您可以像其他人提到的那样使用它来打开新的范围。这意味着(这是C特性)您可以再次使用相同的堆栈变量名称,因为它们位于不同的范围内。此外,您在该范围内声明的变量将无法被外部范围访问。
与内存占用无关,只与代码组织有关。
答案 1 :(得分:1)
基于上面的例子,这是一种降低应用程序内存占用的有效方法吗?
没有。他们甚至都不相关。它们都与@autoreleasepool
无关 - 花括号的这种用法是打开新范围的简单方法。
答案 2 :(得分:0)
大括号的作用只是定义一个新范围,因此您可以定义与其他外部范围变量同名的新变量。
@autoreleasepool {}块类似于安静,但是在开头声明了一个自动释放池并在结尾处将它排干,所以从内存占用的角度来看可能更好,因为在那里声明的所有自动释放的对象都将是退出该范围时发布。