Если вы заметили, что дублируете то, что написали, или столкнулись с написанием существующего кода, подумайте о создании интерфейса (объекта, функций набора и т. Д.) Для выполнения этих задач.
см. СУХОЙ (не повторяйте себя).ко времени написания нескольких приложений будет много дублирующих функций.Лучше всего написать это один раз и правильно написать.
Вот некоторые рекомендации высокого уровня:
не помещайте специфичные для приложения функции в общий интерфейс(вместо этого используйте подкласс, общий для двух проектов)
всегда защищайте свои базы от взлома (если только вы не столкнулись с проблемой в системных библиотеках).если клиенты (например, подклассы, вызывающие абоненты) нуждаются в конкретном обходном пути или требуют конкретной проверки, то лучше заставить их обработать его.
используют утверждения, чтобы гарантировать, что они используют интерфейс какнамеренно, проверяйте каждый аргумент, предусловие / постусловие, состояние вашего объекта и т. д.
сохраняйте ваши объекты / интерфейсы очень маленькими и обслуживаемыми, с четкой целью предполагаемого использования.естественно, это приведет к большему количеству объектов.
избегают необходимости использовать синглтоны и статические данные;почти всегда есть лучший способ, даже если это так же просто, как принуждение клиентов к созданию экземпляра вашего класса.
создание библиотек с этими интерфейсами и их логическое разделение.
теперь, когда это покрыто…
я бы начал с (потенциально нескольких) экземпляров объектов, которые вам понадобятся.в документации нет ничего, что гласит: «Вы не должны создавать несколько экземпляров объекта».
, если это не подходит для профилирования, , тогда рассмотрите возможность использования общего объекта, который передает сообщения вобъекты (в вашем приложении), которые требуют обновлений.
обоснование: есть вероятность, что Apple уже оптимизировала реализацию, так что вам не нужно.
наконец, я нарушил эти рекомендации вприложение, которое требовало тонны запросов о местоположении и отображало тонну информации о местоположении.приложение использовало некоторые статические данные за интерфейсом, который сохранял менеджер местоположения и местоположение (среди прочего).поэтому я в конечном итоге использовал статические данные с закрытыми (скрытыми) статическими данными, чтобы уменьшить требования к памяти и процессорам в этом случае.