C++ (или C в этом отношении) дает Вам мелкомодульный контроль над Вашими структурами данных. Если Вы хотите к биту - вертят Вас, имеют ту опцию. Большой управляемый Java или приложения.NET (OWB, Visual Studio 2005 ), которые используют внутренние структуры данных библиотек Java/.NET, несут багаж с ними. Я видел, что сессии разработчика OWB используют по 400 МБ RAM и ПРЕДЛОЖЕНИЙ на куб или дизайн ETL, входящий 100's МБ также.
На предсказуемой рабочей нагрузке (такой как большинство сравнительных тестов, которые много раз повторяют процесс) JIT может получить Вас код, который оптимизирован достаточно хорошо, что нет никакого практического различия.
IMO на крупных приложениях различием не является так JIT как структуры данных, что сам код использует. Где приложение тяжело памятью, Вы получите менее эффективное использование кэша. Неудачные обращения в кэш на современных центральных процессорах являются довольно дорогими. То, где C или C++ действительно побеждают, - то, где можно оптимизировать использование структур данных для игры приятно с кэшем ЦП.
Стандартный обходной путь для UIWebView
- установить UIWebViewDelegate
и реализовать метод webView: shouldStartLoadWithRequest: navigationType:
. В вашем коде JavaScript перейдите к некоторому поддельному URL-адресу, который кодирует информацию, которую вы хотите передать своему приложению, например, скажем:
window.location = "fake://myApp/something_happened:param1:param2:param3";
В методе делегата найдите эти поддельные URL-адреса, извлеките необходимую информацию, выполните любое действие подходящее и верните NO
, чтобы отменить навигацию. Вероятно, лучше всего отложить любую длительную обработку, используя некоторую разновидность performSelector
.
Предполагая, что вы создаете приложение, вы можете посмотреть, как PhoneGap реализует его (или даже использовать). Это библиотека, которая поддерживает обмен данными между JS и OBJ-C. Существуют также другие библиотеки и решения.
Если вы говорите о веб-приложении (то, что пользователь получает из Mobile Safari), вы не можете добраться до Objective-C оттуда.