Jakie są konsekwencje pominięcia @autoreleasepool {} w main ()?

Po co robić szablony Xcode 4.x dla Objective-Cwiersz poleceń iiOS programy dodają@autoreleasepool {} owijanie częścimain()kod? Zauważ, że tak się nie dziejeOS X szablon aplikacji.

Dlaczego aplikacje OS X nie robią tego samego? Dlaczego obie nie używają tej samej metody?

Wreszcie, skoro cała pamięć jest zwalniana po zamknięciu dowolnego programu, dlaczego tak jest?praktyczny znaczenie?

Albo zadać to inaczej, jakie są praktyczne konsekwencje pominięcia@autoreleasepool { ... } wmain() dlawiersz poleceń lubiOS Program Objective-C?

Te dwa fragmenty kodu kompilują się i wydają się działać równoważnie:

1

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        NSArray *array = @[@"Hello, world!"];
        NSLog(@"%@", array[0]);
    }
    return 0;
}

2.

int main(int argc, const char * argv[])
{
    NSArray *array = @[@"Hello, world!"];
    NSLog(@"%@", array[0]);
}

Zauważ, że zależy mi tylko na wyjaśnieniach w kontekście ARC. ARC zabrania wyraźnego używaniaautorelease.

questionAnswers(4)

yourAnswerToTheQuestion