Где разместить общий код для iPhone, CLLocationManager - PullRequest
7 голосов
/ 25 октября 2010

Если у меня есть приложение панели вкладок и я планирую использовать расположение ядра на разных вкладках, есть ли хорошее место для размещения кода, используемого для выделения / инициализации CLLocationManager, и получения обновлений после вызова startUpdatingLocation?Или, если он будет использоваться в двух разных вкладках, я просто вставлю его в код для каждой вкладки?Просто интересно, что такое лучшие практики, так как я новичок в программировании.Спасибо.

Ответы [ 3 ]

5 голосов
/ 25 октября 2010

Я не согласен с Джоном, AppDelegate - это «простой» способ сделать это, но не всегда лучше.

Я бы сделал это с помощью синглтона.Вы можете посмотреть статью Мэтта Галлахера о Singletons, AppDelegates и данных верхнего уровня для справки.

1 голос
/ 25 октября 2010

Если вы заметили, что дублируете то, что написали, или столкнулись с написанием существующего кода, подумайте о создании интерфейса (объекта, функций набора и т. Д.) Для выполнения этих задач.

см. СУХОЙ (не повторяйте себя).ко времени написания нескольких приложений будет много дублирующих функций.Лучше всего написать это один раз и правильно написать.

Вот некоторые рекомендации высокого уровня:

  • не помещайте специфичные для приложения функции в общий интерфейс(вместо этого используйте подкласс, общий для двух проектов)

  • всегда защищайте свои базы от взлома (если только вы не столкнулись с проблемой в системных библиотеках).если клиенты (например, подклассы, вызывающие абоненты) нуждаются в конкретном обходном пути или требуют конкретной проверки, то лучше заставить их обработать его.

  • используют утверждения, чтобы гарантировать, что они используют интерфейс какнамеренно, проверяйте каждый аргумент, предусловие / постусловие, состояние вашего объекта и т. д.

  • сохраняйте ваши объекты / интерфейсы очень маленькими и обслуживаемыми, с четкой целью предполагаемого использования.естественно, это приведет к большему количеству объектов.

  • избегают необходимости использовать синглтоны и статические данные;почти всегда есть лучший способ, даже если это так же просто, как принуждение клиентов к созданию экземпляра вашего класса.

  • создание библиотек с этими интерфейсами и их логическое разделение.

теперь, когда это покрыто…

я бы начал с (потенциально нескольких) экземпляров объектов, которые вам понадобятся.в документации нет ничего, что гласит: «Вы не должны создавать несколько экземпляров объекта».

, если это не подходит для профилирования, , тогда рассмотрите возможность использования общего объекта, который передает сообщения вобъекты (в вашем приложении), которые требуют обновлений.

обоснование: есть вероятность, что Apple уже оптимизировала реализацию, так что вам не нужно.

наконец, я нарушил эти рекомендации вприложение, которое требовало тонны запросов о местоположении и отображало тонну информации о местоположении.приложение использовало некоторые статические данные за интерфейсом, который сохранял менеджер местоположения и местоположение (среди прочего).поэтому я в конечном итоге использовал статические данные с закрытыми (скрытыми) статическими данными, чтобы уменьшить требования к памяти и процессорам в этом случае.

0 голосов
/ 25 октября 2010

Делегат приложения - хорошее центральное место для таких данных.Вы всегда можете получить делегат приложения с помощью [[UIApplication sharedApplication] delegate]

...