1) Оператор return, вероятно, существует только потому, что компилятор не знает, что функция никогда не сможет вернуться (в конце концов, она не размечена каким-либо особым образом).Таким образом, анализ потока кода компилятора предупредит, что в нем отсутствует оператор return.Это все еще не объясняет, почему UIApplicationMain () имеет возвращаемое значение.Возможно, существует ошибка, при которой он на самом деле может вернуть, кто знает.
2) Я думаю, что наличие пула автоматического выпуска в main () вокруг UIApplicationMain не так,поскольку любой объект, освобожденный без пула, попадет в этот пул автоматического выпуска, который сохраняется в течение всей продолжительности приложения.Таким образом, объект по-прежнему протекает.
Обычно, если нет пула автоматического выпуска, среда выполнения регистрирует сообщение об ошибке об отсутствующем пуле и говорит разработчику установить точку останова на _NSAutoreleaseNoPool, чтобы найти, где находится пул.происходит автоматическое высвобождениеNSAutoreleasePool верхнего уровня, обнаруженный в шаблонах, таким образом, фактически скрывает эту утечку от пользователей.
UIApplicationMain () должен создавать свой собственный пул автоматического выпуска по мере необходимости (он должен создавать и удалятьв любом случае пул один раз проходит через цикл обработки событий, иначе объекты просто сложатся во внешнем пуле, потребляя всю память).Если кто-то думает, что ему действительно нужно запустить код ObjC перед вызовом UIApplicationMain () (и он не может выполнить ту же работу в applicationDidFinishLaunching: или лайках), он всегда может создать пул до UIApplicationMain ().Поскольку UIApplicationMain () задокументировано, что никогда не возвращается (например, exit ()), нет смысла в том, чтобы команды следовали за ним в любом случае.Пул никогда не будет освобожден.
Если вы посмотрите на шаблоны Mac, у них фактически нет пула.
3) Параметры используются, даже если дважды щелкнуть приложение вMac.Таким образом, ОС передает определенную информацию приложению.Первый параметр - это путь к исполняемому файлу при его запуске, который, как я полагаю, необходим для поиска файлов в комплекте.На Mac PSN (серийный номер процесса) также передается приложению в качестве параметра при запуске из Finder:
05.07.11 22:18:54,129 [0x0-0x21e21e].com.thevoidsoftware.MacTestApp: 0: /Volumes/RamDisk/MacTestApp-fdcuwfrzopalmgaufwujijhqhvjc/Build/Products/Debug/MacTestApp.app/Contents/MacOS/MacTestApp
05.07.11 22:18:54,129 [0x0-0x21e21e].com.thevoidsoftware.MacTestApp: 1: -psn_0_2220574