Storing and Restoring UIView: decodeRestorableStateWithCoder isn't called

I am attempting to store and restore a custom UIView using the methods

encodeRestorableStateWithCoder
and
decodeRestorableStateWithCoder
. I have assigned a unique string to the UIView's
restorationIdentifier
property first thing in the only init method in use. Note that it is a custom init method - I'm not sure if that makes a difference, for instance this is how I am allocating and assigning the property:


init(frame: CGRect, menuGroups: Array) {
  super.init(frame: frame)
  restorationIdentifier = "TDTOilistMenu"
  ...
}


Although I am not using

init?(coder aDecoder: NSCoder)
I have that defined as well:
required public init?(coder aDecoder: NSCoder) {
  super.init(coder: aDecoder)
  restorationIdentifier = "TDTOilistMenu"
}


Anyways, the method

encodeRestorableStateWithCoder
is being called when the app is put into the background, but
decodeRestorableStateWithCoder
is never called when the app is launched. I am terminating the app (in Xcode) after putting the app in the background, so it should be.


Per Apple's documentation, the owning ViewController also has a unique identifier for its'

restorationIdentifier
property:

https://developer.apple.com/reference/uikit/uiview/1622494-restorationidentifier


Note that I have tried setting the view's restorationIdentifier property from using the owning View Controller's restorationIdentifier property (directly after initialization), but that makes no difference; the UIView's decode method is still not callled.


What do I have to do to ensure decodeRestorableStateWithCoder is called?