On Mar 26, 2013, at 1:40 PM, Quincey Morris 
<quinceymor...@rivergatesoftware.com> wrote:

> On Mar 26, 2013, at 13:11 , Conrad Shultz <conrad_shu...@apple.com> wrote:
> 
>> If code expecting an NSOutlineView receives a TKOutlineView instance it may 
>> break or behave unexpectedly since it may well try to set a delegate 
>> conforming to <NSOutlineViewDelegate> but you have made your class require a 
>> delegate conforming to the more specific <TKOutlineViewDelegate>.
> 
> Chris's delegate actually implements NSOutlineViewDelegate, doesn't it?
> 
> Lee Ann's earlier suggestion of declaring TKOutlineViewDelegate to conform to 
> NSOutlineViewDelegate would prevent any remaining compiler complaints. Thus 
> the final declaration of the protocol would look like:
> 
>       @protocol TKOutlineViewDelegate <NSObject,NSOutlineViewDelegate>
> 
> Would that take care of your concern?


My concern is not a compile-time issue; it's a substitutability issue that may 
manifest at run-time.

Consider the following hypothetical:

1) A required method is added to <TKOutlineViewDelegate>.

2) A class (say, a view controller) expecting an NSOutlineView is handed a 
TKOutlineView and sets its delegate to an object conforming to 
<NSOutlineViewDelegate> but *not* <TKOutlineViewDelegate>. This is valid since 
TKOutlineView is a subclass of NSOutlineView, and as such should be 
substitutable anywhere an NSOutlineView is expected.

3) The TKOutlineView then later attempts to send the <TKOutlineViewDelegate> 
message from #1 above to its delegate.

4) An exception is raised at run-time since the delegate actually conforms to 
<NSOutlineViewDelegate>, not <TKOutlineViewDelegate>.

Admittedly this is a fairly specific combination of events that may never 
apply, but I wanted to make sure the OP is aware of it.

-Conrad
_______________________________________________

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