#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
Основной метод вызывает выпуск в пуле после выхода приложения, который, кстати, отправляет освобождение всем объектам в пуле. Но поскольку автореализованные объекты, созданные внутри приложения, не прилипают до тех пор, пока приложение не выйдет, в какой-то момент во время runloop пул либо сливается, либо освобождается (в контексте iPhone, дренаж == release .., если мне не нужно исправлено по этому вопросу!). Но знает ли кто-нибудь наверняка, когда это произойдет? Казалось бы логичным, чтобы пул был исчерпан в конце runloop, и новый, который будет выделен в начале следующего, но я не могу найти окончательной информации об этом. Here's a discussion на яблоневых форумах, но это кажется весьма спекулятивным (не говоря уже спорным, к концу). Может ли кто-нибудь дать мне ответ, в идеале, с документами или исходным кодом (или даже экспериментальной программой)?Когда главный пул Autorelease в какао-прикосновении сливается?
конкретный пул, который вы ссылаетесь, не сливается до конца приложения, но каждый вызов цикла запуска создает свой собственный пул, вложенный в цикл выполнения приложения. – cobbal
Это имеет смысл. Итак, если я никогда не создаю свой собственный пул, у определенного приложения по умолчанию будет два вложенных пула? – jakev
Yup; внешний пул и велосипедный пул в пределах цикла запуска. UIApplicationMain() может создавать и сливать пулы в качестве детали реализации. – bbum