[swift-evolution] Add code to super methods.
Dave Abrahams
dabrahams at apple.com
Tue Nov 29 22:17:05 CST 2016
on Tue Nov 29 2016, Michael Ilseman <milseman-AT-apple.com> wrote:
>> On Nov 28, 2016, at 7:22 PM, Dave Abrahams via swift-evolution <swift-evolution at swift.org> wrote:
>>
>>
>> on Thu Nov 24 2016, Michael Ilseman <swift-evolution at swift.org> wrote:
>>
>
>>>> On Nov 17, 2016, at 2:54 AM, Tino Heth via swift-evolution
>>> <swift-evolution at swift.org> wrote:
>>>>
>>>> An equivalent of "NS_REQUIRES_SUPER" (hopefully with a better name ;-) has been requested several
>>> times, but never got the momentum it deserves.
>>>> Considering the current confusion (especially in UIKit), it would be
>>>> really nice to have some help from the compiler, and I wonder how
>>>> composition and protocols would be helpful here at all.
>>>>
>>>
>>> As an intermediary measure, this seems like an interesting QoI
>>> improvement for the compiler: warn when super.foo() is not called in
>>> the overridden method.
>>
>> Please no. Methods that need to be called when they are overridden are
>> almost always a result of poor design.
>>
>> “I don't always do Object Oriented Programming, but when I do, I use
>> the Template Method Pattern"
>>
>> understating-the-case-ly yrs,
>
> I agree, that’s why I’m suggesting it be a ObjC-side attribute for use
> by e.g. UIKit.
OK, that's fine; it sounded like you were proposing a blanket rule.
Apparently UIKit equally needs an attribute that says “*don't* call
super,” and that would be a good idea for Swift too. It can also be
expressed as “this method is private but overridable,” but I know that
idea gives some people the hives :-).
> Regardless of how both of us may feel about UIKit’s design, it is the
> largest platform on which apps are made and there’s a chance for the
> compiler to enhance the developer experience. I do agree that we
> should be careful about condoning the practice for new/Swift-only
> frameworks.
Heck, I'm not even going that far. I'm just saying I don't want to
“un-condone” designs that don't require super-calling.
--
-Dave
More information about the swift-evolution
mailing list