> On Nov 29, 2016, at 1:48 AM, Tino Heth <2...@gmx.de> wrote:
>
>> Methods that need to be called when they are overridden are
>> almost always a result of poor design.
> Without an explanation or data to back this statement, it's hard to argue
> about it, and I won't make random shots.
>
> But as a matter of fact, we have to deal with methods which require the
> behaviour in question now, and I have no idea when Cocoa will be replaced
> with something better.
That's a great point. I just don't want to punish those who create methods
with default implementations that are designed to be completely replaced in
subclasses. I suppose that *could* encourage more use of protocols, but that
seems like a very unfriendly way to reach a protocol-oriented utopia ;-)
> Just out of sheer curiosity:
> What would be a better design for a method like viewWillAppear? The obvious
> alternative that is possible with current Swift and template methods looks
> really ugly to me:
> Not only would you have to add two empty methods to each subclass of
> UIViewController,
Why two, and why empty? UIViewController would supply its own empty default
implementation.
> but also rely on that those methods are only overridden once in the hierarchy
> of inheritance.
There's no law saying you *can't* call super if you absolutely must build a
two-level hierarchy below UIViewController (though there are ways around
that—the main one being to avoid inheritance hierarchies). I just don't want
to create a world where you're always expected to call super everywhere, which
is what would happen if we always warn when you don't call super.
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution