Я использую Swift 3 с ARC в приложении iOS, и я хочу вручную сохранить объект.Как сохранить вручную в Swift с ARC?
Я попробовал object.retain(), но Xcode говорит, что он недоступен в режиме ARC. Есть ли альтернативный способ сделать это, чтобы рассказать Xcode, я знаю, что я делаю?
Long Version:
У меня есть класс LocationTracker, который регистрирует себя в качестве делегата в CLLocationManager. Когда местоположение пользователя изменяется, оно обновляет статическую переменную с именем location. Другие части моего кода, которым требуется местоположение, получают доступ к этой статической переменной, не имея или не нуждающихся в ссылке на экземпляр LocationTracker.
Проблема с этим дизайном заключается в том, что делегаты не сохраняются, поэтому LocationTracker освобождается от времени, когда CLLocationManager отправляет ему сообщение, в результате чего происходит сбой.
Я хотел бы вручную увеличить коэффициент пересчета LocationTracker, прежде чем устанавливать его в качестве делегата. Объект никогда не будет освобожден в любом случае, так как местоположение должно контролироваться до тех пор, пока приложение работает.
Я нашел обходное решение, которое должно иметь статическую переменную «экземпляр», которая содержит ссылку на LocationTracker. Я считаю этот дизайн неэлегантным, так как я никогда не буду использовать переменную «instance». Могу ли я избавиться от него и явно увеличить коэффициент пересчета?
Этот вопрос не является дубликатом, как утверждалось, поскольку other question посвящен Objective-C, в то время как этот вопрос относится к Swift.
Возможный дубликат [Ручное время жизни объекта с ARC] (http://stackoverflow.com/questions/10489995/manual-object-lifetime-with-arc) – CRD
Не дубликат. Я отредактировал вопрос, чтобы сказать, почему. –
Я думаю, вы найдете ряд представленных решений, которые применимы к Swift по отношению к Objective-C. Попробуйте попробовать, и вы можете найти подходящее для вас решение. HTH – CRD