You may wish to have a look at my proposal for partial initializers. It went dormant as I think everyone was burned out on talking about initializers at the time.
https://github.com/anandabits/swift-evolution/blob/partial-initializers/proposals/NNNN-partial-initializers.md Sent from my iPad > On Apr 27, 2016, at 4:52 PM, Shannon Potter via swift-evolution > <[email protected]> wrote: > > Consider a relatively-common init pattern: > > class SomeViewController: UIViewController { > > // MARK: Properties > > private var videoPlayer: AVPlayer > private var videoPlayerLayer: AVPlayerLayer > > // MARK: - Object Lifecycle > > override init(nibName: String?, bundle nibBundle: NSBundle?) { > super.init(nibName: nibName, bundle: nibBundle) > > commonInitialization() > } > > required init?(coder decoder: NSCoder) { > super.init(coder: decoder) > > commonInitialization() > } > > private func commonInitialization() { > videoPlayer = AVPlayer(...) > videoPlayerLayer = AVPlayerLayer(player: videoPlayer) > } > > } > > This does not work. Both properties are non-optional, and the compiler > complains that they are not initialized in either init method. It seems > rather common to want a single point of contact regarding object > initialization, regardless of the path taken to initialize that object. > Ideally, objects could all be funneled to one designated initializer, but > this isn’t always the case. > > What are people’s thoughts about either a specialized function that is always > called at the very end of each object’s lifecycle OR some sort of attribute > for a function that hints that the compiler should follow it if called in an > init function to check for property initialization? > > func commonInit() { > > } > > or > > @extend_init private func commonInitialization() { > > } > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
