[swift-dev] Is there an underlying reason why optional protocol requirements need @objc?

Erica Sadun erica at ericasadun.com
Fri Mar 4 11:15:59 CST 2016


> On Mar 4, 2016, at 9:25 AM, Dave Abrahams via swift-dev <swift-dev at swift.org> wrote:
> 
> 
> on Fri Mar 04 2016, Simon Pilkington <swift-dev-AT-swift.org> wrote:
> 
>> This seems like a strange/unrelated restriction on what is quite a useful feature.
> 
> ...or an abomination.  What sense does “optional requirement” make,
> after all?!
> 

However oxymoronic,  I kind of get the point. If you want default no-op behaviors, with
the option to override, which is what optional Objective-C requirements really are, just 
create protocol extensions.

extension MyProtocol {
   func optionalMember() {} // nothing to do 
}

This guarantees that the member exists, can be called by all consumers, but that there's a 
default in place that frees the conforming type from actually having to implement anything
unless it really wants to.

-- E




More information about the swift-dev mailing list