У меня есть класс GeoFence. Я обсуждаю сам, должен ли он быть синглтоном. Мой код работает в любом случае, и я прочитал пару статей и сообщений здесь, на SO об этом. Но я не нашел хороших правил, когда правильно использовать синглтон.
Я действительно не могу придумать причину, по которой этого не должно быть, и у меня есть несколько причин, по которым это должно быть; классическое "будет только один!" а также то, что класс на самом деле не имеет никаких зависимостей, насколько я могу судить, кроме объекта locationManager, который он мог бы также создать сам, поскольку он не нужен где-либо еще, и я не верю, что какие-либо специальные реализации могли бы когда-нибудь потребуются. По этой причине я не вижу смысла вводить locationManager. Также необходимо использовать другой общий экземпляр в приложении, которое вызывает сервер для получения некоторых данных. Я думаю, что наиболее важной причиной сделать его синглтоном будет то, что он отслеживает отслеживаемые регионы и хранит некоторые данные, связанные с этим, а также некоторые временные метки и другие второстепенные вещи в NSUserDefaults. Опасаюсь, что другой экземпляр класса может вызвать непоследовательное поведение приложения.
Мой код предназначен для добавления в существующее приложение в качестве расширения.
Я не думаю, что публикация моего кода действительно уместна, но я кратко объясню, что делает класс: при создании экземпляра он начнет отслеживать местоположение пользователей и продолжит делать это в фоновом режиме. Он запросит список местоположений с сервера и получит их на основе текущего местоположения устройства. Эти местоположения будут отсортированы и сохранены, а 20 ближайших к устройству местоположений будут отслеживаться для входа. Это в значительной степени основы этого. Геозона.
Мне бы хотелось привести некоторые аргументы за и/или против использования синглтона в этом случае.