Это - пример функционального кода процессуального кодекса v.
Вы подробно изложили процедуру компилятора для следования, таким образом, оптимизации будут основанными вокруг подробной процедуры и минимизируют любые побочные эффекты или не оптимизируют, где это не будет делать то, что Вы ожидаете. Это облегчает отлаживать.
, Если Вы вставляете функциональное описание того, что Вы хотите, например, SQL тогда, Вы даете компилятору широкий спектр опций оптимизировать.
, Возможно, некоторый тип анализа кода был бы в состоянии найти этот тип проблемы или представляющий во времени выполнения, но тогда Вы захотите изменить источник на что-то более разумное.
Похоже, вы загружаете HTML из своего пакета. Это означает, что все дополнительные файлы (.js, .css и любые мультимедийные файлы) также должны присутствовать в вашем пакете. Итак, первое, что нужно проверить, - это заглянуть внутрь содержимого вашего исполняемого файла и убедиться, что включены файлы js и т. Д.
Если все выглядит нормально, то следующее, что нужно проверить, - это ссылки на файлы html, js или css. контент через относительные или абсолютные URL. Если в веб-контенте есть ссылка на абсолютный путь, то UIWebView будет пытаться загружать этот контент каждый раз, поэтому он будет работать только при наличии сетевого подключения. Если путь относительный, он будет искать в пакете, существует ли такой файл.
Когда вы включили html и контент в файл проекта XCode, вы, вероятно, перетащили файл (ы) на боковую панель проекта, и вас спросили, «Рекурсивно создавать группы для любых добавленных папок» или «Создать ссылки на папки» для любых добавленных папок ".
Значение по умолчанию - первое, что означает, что XCode создает желтую папку в вашем проекте, но игнорирует иерархию каталогов на диске, когда приходит время сгенерировать выходной пакет. Если вы выберете второй вариант, папка станет синей, и если вы посмотрите в выходной пакет, вы увидите, что вся иерархия папок была реплицирована.
Первый работает для простых веб-страниц, где все находится на одном уровне папки и вы можете использовать метод, который вы указали выше, чтобы загрузить его. Второй случай работает лучше, если ваша веб-страница сложная и ссылается на контент в подпапках, и в этом случае вам нужно загружать веб-страницы по относительному пути (скажем, из папки 'webpages'):
NSString *path = [[NSBundle mainBundle]
pathForResource:@"index" ofType:@"html"
inDirectory:@"webpages"];
Последнее, что нужно проверить for - есть ли в html-файле какие-либо BASE-теги. Это способ указать адрес или цель по умолчанию для всех ссылок на странице, но он может заглушить ссылки веб-просмотра.
Вам необходимо установить следующее:
myWebView.dataDetectorTypes = UIDataDetectorTypeLink
Проблема в том, что этот вызов:
NSURL *url = [NSURL fileURLWithPath:path];
не устанавливает baseURL, поэтому относительные пути в файле .html для таких вещей, как javascript, css, изображения и т. Д., Не работают.
Вместо этого используйте следующее:
url = [NSURL URLWithString: [path lastPathComponent]
relativeToURL: [NSURL fileURLWithPath: [path stringByDeletingLastPathComponent]
isDirectory: YES]];
, и тогда будут найдены такие вещи, как "styles.css" в файле index.html. IFF они скопированы в пакет рядом с файлом .html.