Since tabBar property is accessible through getter only, I can’t just override it with didSet to know whenever its own isHidden property got changed. If you’re not too familiar with this concept, Key-Value Observing (or KVO) is an Observer Pattern that notifies object about changes to the properties of other objects. new ] ) { object , change in print ( "TabBar isHidden changed from : \( change .