import UIKit class Foo: UIView, FooDelegate { private var foo: FooController! @objc var autostart:Bool = false @objc var file:String? { get { return foo.config.file } set(file) { foo.config.file = file } } override init(frame: CGRect) { super.init(frame: frame) createFoo() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } func createFoo() { let config: Config = Config() config.autostart = autostart foo = FooController(config: config) foo.delegate = self } }