> On 14 Dec 2015, at 17:12, dangerwillrobinsondan...@gmail.com wrote:
> 
> The bug should be that it gives you a wrong message, because it already 
> conforms to the protocol because it inherits from a class that conforms to 
> the protocol. 
> 
> All you should have to do is implement an override of the methods to do 
> custom stuff or of the properties. 
> You shouldn't declare conformity to NSValidatedUserInterfaceItem because it 
> already confirms earlier in its ancestry. 
> 

Nope. That’s wrong for 2 reasons. 

Firstly although NSControl does have the methods on it to conform to the 
protocol in Objective C, it doesn’t actually declare that it conforms to the 
protocol anywhere so you don’t get the actual conformance from the bridge over 
to Swift. Its conformance is informal, not formal. 

Secondly, the methods on NSControl which implement tag and action are 
properties in Objective C, not methods. In objective C that doesn’t matter as 
properties just end up being two methods and the getter method in that case has 
the right signature for the protocol so, in objective C, you can subclass from 
any subclass of NSControl, declare protocol conformance at that point, and it 
works. Swift however imports the properties as properties, not a pair of class 
functions and properties do not make a class conform to a protocol which 
requires functions, which the protocol in this instance does. Neither can you 
override the property with a same-named method, so you can’t do it. 

I did ask earlier if Luc can declare the conformance in objective-C, literally 
by making an NSValidatedButton subclass of NSButton which does nothing but 
formally declare the protocol conformance and then use that in swift. My 
thinking there is that the formal conformance to the protocol in objc will mean 
the object is correctly tagged in swift as already conforming. I don’t see 
another way to do it. 
_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to