Недавно я написал код, в котором я пытался ссылаться на выход на UIViewController
, который я только что создавал с помощью [storyboard instantiateViewControllerWithIdentifier]
, и изменил подпункт, на который указывает выход, перед тем как представить ViewController
. Это не сработало, потому что представление ViewController
еще не загрузило свои подпрограммы, включая тот, на который ссылался мой выход, поэтому свойство просто дало мне нулевой указатель.
После (с некоторой борьбой) отслеживания причины моей проблемы в отладчике я разобрался и узнал через ответы, такие как этот, что я могу вызвать представление для загрузки своих подзонов без отображения, вызвав геттер myViewController.view
. После этого я могу без проблем получить доступ к моей розетке.
Это явный хак, правда, и Xcode - совершенно правильно - ему не нравится, и сердито протестует с этим предупреждением:
Результат доступа к свойствам не используется - геттеры не должны использоваться для побочных эффектов
Есть ли альтернативный способ для неаккуратных альтернатив, который не связан с использованием .view
getter? В качестве альтернативы существуют канонические/идиоматические шаблоны для этого сценария, включающие нечто вроде динамического добавления обработчика, который будет вызываться сразу после загрузки подвью?
Или стандартное решение просто заменить myViewController.view
на [myViewController view]
, чтобы закрыть предупреждение Xcode, а затем жить с хаком?