[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