Каковы последствия отсутствия @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
.