2012-09-20 53 views
0

筆記:我的問題是根據檢查this及其答案後得出的。Objective-c中的大括號

在一些更大的方法中,有些代碼只能在特定的時間段內存活。舉個例子:

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{}有什麼關係?

回答

1

基於上面的例子,這是一種降低應用程序內存佔用量的有效方法嗎?

不,他們甚至沒有關係。它們都不與@autoreleasepool有關 - 花括號的這種用法是打開一個新範圍的簡單C方式。

0

花括號所做的只是定義一個新的作用域,因此您可以使用與其他外部作用域變量相同的名稱來定義新變量。

@autoreleasepool {}塊是非常相似的,但也在開頭聲明一個自動釋放池,並在最後耗盡它,所以從內存佔用的角度來看可能會更好,因爲所有在那裏聲明的自動釋放對象都會在退出該範圍時被釋放。

2

這只是簡單的C語法。您可以像其他人提到的那樣使用它來開啓新的範圍。這意味着什麼(這是C特性),您可以再次爲堆棧變量使用相同的名稱,因爲它們在不同的範圍內。另外,在該範圍內聲明的變量將不能被外部範圍訪問。

與內存佔用量無關,僅與代碼組織有關。