On 16 Jan 2019, at 20:17, Jens Alfke <j...@mooseyard.com> wrote: > >> On Jan 16, 2019, at 9:59 AM, Carl Hoefs <newsli...@autonomy.caltech.edu> >> wrote: >> >> But all of that would come "for free" if NSImage inherited from NSData, no? > > Well, that wouldn’t make sense, because an NSImage isn’t a piece of data. It > can have multiple data representations (JPEG, PNG, PDF…) and it might not > have any at all if it was created directly in-memory with a pixmap. It’s a > thing that can create a data representation.
Quite. This point is worth emphasising, actually. A very common mistake people make when trying to write OO programs is using inheritance where there isn’t an is-a relationship. NSImage definitely *is not* an NSData, and so should not inherit from it. (Indeed, it could even have a custom NSImageRep backing it that does the drawing on the fly; indeed, there is actually a built-in version of this in the current version of Cocoa, where you can specify a block that gets used to render the image whenever the system feels it’s necessary.) This confusion isn’t helped by the fact that certain commonly used OO languages (I’m looking at you, C++) muddy the waters by trying to use inheritance for multiple different purposes (e.g. interfaces, typically via pure virtual classes; mixins and the like for *implementation* purposes - which largely only works because of multiple inheritance and/or templates, depending on how the mixin is built). Kind regards, Alastair. -- http://alastairs-place.net _______________________________________________ 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