I guess, but doesn’t it seem far more elegant to have a protocol for 
tag-containing objects? This is a feature that’s pretty heavily used…

Charles

> On Oct 24, 2017, at 6:06 PM, Slava Pestov <spes...@apple.com> wrote:
> 
> You can implement an @objc protocol with an optional requirement, and make 
> NSObject conform to it.
> 
> Slava
> 
>> On Oct 24, 2017, at 4:05 PM, Charles Srstka <cocoa...@charlessoft.com 
>> <mailto:cocoa...@charlessoft.com>> wrote:
>> 
>>> On Oct 24, 2017, at 5:02 PM, Slava Pestov via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>>> 
>>> Thoughts? Does anyone actually rely on this feature, instead of just 
>>> stumbling on it by accident once in a while?
>> 
>> The main thing I can think of off the top of my head is getting the tag from 
>> the sender in an IBAction:
>> 
>> @IBAction private func someAction(_ sender: Any?) {
>>     guard let tag = (sender as AnyObject?)?.tag as Int? else { return }
>> 
>>     ...
>> }
>> 
>> Unfortunately given how many unrelated Cocoa objects there are that 
>> implement -tag, it’s not really practical to implement this without the 
>> AnyObject dispatch. If a TagContaining protocol could be introduced and all 
>> the objects that implement -tag could be made to conform to it, then that 
>> would work around the problem (I believe I pitched this at some point long 
>> ago, but without catching any interest).
>> 
>> Charles
>> 
> 

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to