Каковы последствия отсутствия @autoreleasepool {} в main ()?

Почему шаблоны Xcode 4.x для Objective-Cкомандная строка а такжеIOS программы добавляют@autoreleasepool {} частичная упаковкаmain()код? Обратите внимание, что это не происходит дляOS X шаблон приложения.

Почему приложения OS X не делают то же самое? Почему оба не используют один и тот же метод?

Наконец, поскольку вся память освобождается при выходе из любой программы, почему все этопрактическое значение?

Или по-другому спросить, каковы практические последствия пропуска@autoreleasepool { ... } вmain() длякомандная строка илиIOS Программа Objective-C?

Эти два фрагмента кода компилируются и работают одинаково:

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]);
}

Обратите внимание, меня интересует только объяснение в контексте ARC. ARC запрещает явное использованиеautorelease.

Ответы на вопрос(4)

Ваш ответ на вопрос