Rui Peres
Rui Peres

Reputation: 25927

Curly Braces in Objective-c

Note: My question is based after checking this and the answers to it.

In some bigger methods, there are pieces of code that you only want to be alive for a certain period of time. An example:

1) I have a big method that sets my UI: UILabel's size, colour, positioning, UIView's gesture recognisers, etc. Knowing the above, does it makes sense to do something like this:

- (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
}

Upvotes: 0

Views: 1284

Answers (3)

DarthMike
DarthMike

Reputation: 3481

It's just plain C syntax. You use it to open a new scope as others mentioned. What this means (this is C feature) that you can use same names for stack variables again, as they are in different scope. Also, variables you declare inside that scope will not be accessible by outside scope.

There is no relation to memory footprint, only about code organization.

Upvotes: 2

user529758
user529758

Reputation:

Based on the above example, is this a valid way of lowering the memory footprint of an application?

No. They're not even related. Neither are they related to @autoreleasepool - this usage of curly braces is the plain C way of opening a new scope.

Upvotes: 1

What curly braces do is just to define a new scope, so you can define new variables with the same name than other outer scope variables.

The @autoreleasepool{} block is quiet similar, but also declares an autorelease pool at the beginning and drains it at the end, so it may be better from a memory footprint point of view because all the autoreleased objects declared there will be released when exiting that scope.

Upvotes: 0

Related Questions