У меня есть класс, который выглядит следующим образом (упрощенно):
class GuideViewController: UIViewController, StoreSubscriber {
var tileRenderer: MKTileOverlayRenderer! // <------ this needs to be set by whoever instantiates this class
override func viewDidLoad() {
super.viewDidLoad()
...
}
}
Мое приложение использует этот класс GuideViewController для отображения множества различных стилей карт, поэтому переменная экземпляра tileRenderer
может иметь много разных значений.
Мне нужна гарантия времени компиляции, что tileRenderer
никогда не будет nil, вместо использования неявно развернутого необязательного параметра.
Как мне этого добиться?
Вещи, которые я рассмотрел до сих пор, но не уверен насчет
- Установка
tileRenderer
в методе init()
в GuideViewController. Это был мой первый инстинкт , этот ответ подразумевает, что это невозможно, или антипаттерн.
- Настройка
tileRenderer
в viewDidLoad()
. Кажется, для этого требуется использовать неявно развернутый необязательный параметр, который обходит проверки во время компиляции. Также у меня сложилось впечатление, что viewDidLoad()
вызывается только один раз для контроллера представления в жизненном цикле приложения
Ручная настройка tileRenderer
после создания экземпляра VC. Например,
let vc = self.storyboard?.instantiateViewController(withIdentifier: "GuideViewController")
vc.tileRenderer = MKTileOverlayRenderer(...) // <----- can I make the compiler force me to write this line?
navigationController?.pushViewController(vc!, animated: true)
Простите, что задал такой наивный вопрос - я довольно новичок в разработке под iOS.