В iOS 6 Apple добавила восстановление состояния в UIViewController
и связанные с ним классы. Это позволяет приложению сохранять состояние при завершении и восстанавливать его, когда пользователь возобновляет работу приложения.
Кажется, все работает нормально, однако я столкнулся со странным сценарием, который не хочет вписываться в шаблон.
Предположим, у нас есть два контроллера представления, ViewControllerOne
и ViewControllerTwo
, оба они хранят некоторое произвольное состояние, которое успешно восстанавливается. Теперь давайте представим, что ViewControllerOne
имеет свойство delegate
и что ViewControllerTwo
является этим делегатом (что является общим шаблоном для контроллеров модального представления). Кто несет ответственность за восстановление этих отношений? И как его хранить/восстанавливать?
В моем конкретном случае никакие раскадровки не задействованы, восстановление происходит в коде через свойство restorationClass
. Моим первым побуждением было попытаться восстановить отношения при создании контроллера представления в restoreClass, однако, поскольку restorationClass
не знает о других существующих контроллерах, он не может полностью восстановить такие отношения.
В качестве альтернативы, если это контроллер представления, который объявляет свойство delegate
, которое должно восстановить отношение, то как теперь он относится к экземпляру контроллера, который был восстановлен в каком-то другом классе?
Короче говоря, это похоже на плохо задокументированный сценарий, и я надеялся, что кто-то сможет пролить на него свет.