#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) {
NSLog(@"new event...");
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
Если это так, то функция main() должна быть вызвана на каждое событие, не так ли? Но я попробовал, и сообщение «новое событие ...» появляется только при запуске приложения. Поэтому я предполагаю, что в основной теме должен быть еще один пул автозапуска.- это главное место на самом деле, где каждый пул создается пул авторекламы основного цикла запуска?
В чем смысл внешнего пула autorelease в main(), так как вся память приложения будет восстановлена ОС при выходе в любом случае? И мне любопытно, почему Apple не просто включила пул авторесурсов верхнего уровня в реализацию UIApplicationMain(). –
Спасибо. Да, мне тоже интересно ... может быть, есть некоторые вещи -autorelease, которые происходят рядом с основным циклом запуска в UIApplicationMain() ... – Thanks
Метод + initialize отправляется классам, прежде чем они получат свое первое сообщение. Если авторы UIApplicationMain (или любая замена, поставляемая пользователем) очень осторожны, чтобы создать экземпляр пула автозаполнения ЛЮБОЙ другой вызов класса, порожденного какао, это может вызвать утечку памяти - те методы + инициализации могут создавать объекты автоопределения. Тогда самый безопасный план состоит в том, чтобы иметь пул авторесурсов, прежде чем вызывать код, который использует Cocoa. Разумеется, UIApplicationMain может создать свой собственный автозапуск. –