I know that class variables are declared in memory (as opposed to on the stack) when the class is initialized, and I know how class methods are basically used. But I have some questions about class methods that aren't answered in the basic documentation.

Are class method also declared in memory? What about any object declared within these class methods? Are they 'static' in scope? What about any objects that are passed into a class method as parameter? Are those also 'static'? 

Does repeatedly calling a class method mean all the objects declared within it are allocated again and again (one per method call), or are they living in one location in memory? Do they get cleared at every run? 

For example, what happens to the do\_something method here:

```
+ (void) main
{
    while (i < MAX)
    {
        [MyClass do_something];
    }
}

+ (void) do_something
{
    NSMutableArray *array = [[NSMutableArray alloc] init];
    ...
    [array release];
}

```