Ты можешь взять торт и съесть его тоже.
Вы можете легко смешивать веб-приложения и нативные приложения, используя UIWebView
экземпляры, например реализовать чувствительные к производительности части в коде Какао / Objective-C и вставлять представления WebKit в части, которые будут слишком трудоемкими, чтобы переписать их как собственные.
Вы можете даже обернуть целое веб-приложение в собственный пакет, если вы хотите распространение в App Store - см. PhoneGap .
Вы также можете разработать чистое веб-приложение, которое не будет выглядеть так, как оно запущено через Safari, если пользователь добавит вашу страницу на свой домашний экран - см. jQTouch .
Недостатки:
Веб-приложения могут быть не такими быстрыми, как нативные, хотя с автономной поддержкой HTML5 и специфичными для WebKit расширениями, такими как переходы и анимации, вы можете продвинуться далеко вперед. Убедитесь, что вы используете события касания - Safari задерживается onclick
.
Трудно заставить чистое веб-приложение чувствовать как правильное нативное приложение. Например, мобильный WebKit не поддерживает position:fixed
, необходимый для репликации верхней панели навигации, а веб-представления имеют другую скорость прокрутки, чем представления таблицы. Это поправимо, но требует тонн JavaScript.
Преимущества:
Быстрое развитие. Я действительно оценил, насколько полезен CSS / HTML для сложных макетов, когда мне приходилось реплицировать приложения за UIView
с (InterfaceBuilder в порядке только для полуфиксированного макета).
Вы застрахованы от Apple, внезапно ненавидящей и запрещающей еще одну вещь. Если они удаляют ваше приложение из AppStore, вы можете разрешить пользователям доступ к нему через Интернет (Google сделал это с помощью приложений Voice и Latitude).
Проще портировать веб-приложения на Android и другие (WinMo, HP Pre, последние BlackBerries и т. Д.). Apple занимает первое место, но ее доля разума не пропорциональна доле рынка. Другие догоняют.
Если вы выбираете родной
Вы должны сделать это так, как Apple: Objective-C и Cocoa (вы можете сделать части приложения простым C или C ++). Есть много учебников и книг по этой теме, поэтому я не буду повторять их здесь. Просто несколько случайных советов:
списки, несмотря на то, что они являются "родным" форматом iPhone, не являются лучшими для связи клиент-сервер. Списки XML имеют большие накладные расходы даже по стандартам XML, и двоичные списки могут быть трудны для создания и отладки. JSON на самом деле быстрее и с ним обычно легче работать.
Если вы выбираете только небольшие биты информации, NSConnection
только усложняет ситуацию. Вы можете просто использовать [NSData dataWithContentsOfURL:]
в методе, запущенном через performSelectorInBackground:
.
Уведомления не доставляются, пока UITableView
прокручивается. Если вы хотите, чтобы в таблицу загружались лениво загруженные изображения, загрузите и установите их с помощью обратных вызовов.