Michel Fortin wrote:
On 2009-01-31 18:50:52 -0500, Walter Bright <newshou...@digitalmars.com> said:

Michel Fortin wrote:
One area I think Objective-C to be very great and that you haven't touched is for creating stable APIs. In Objective-C, contrary to D and C++, you don't have to recompile every dependency when reordering, adding and removing member functions in a class. In 64-bit Objective-C 2.0, you can even add variables to a class without care about recompiling derived classes. Compare that to D, where exposing a class as a public API will either force you to not change much that class, or force your users to recompile every time you make such a change.

If you use interfaces, you can add member fields without needing to recompile clients.

Yeah, indeed. I hadn't thought about that. That's a pretty interesting thing about interfaces now that you make me think about it.

But exposing only interfaces makes the API harder to use. In Cocoa, classes gain new methods at each new version of the framework (read each version of Mac OS X) and it doesn't hinder programs compiled with earlier versions of the framework.

If you had a smart enough dynamic linker and the signature of each function in the virtual table, you could do that in D too by creating virtual tables and updating offsets in the code accordingly while linking. (Objective-C doesn't work like that, but it has the same effect.) Alternativly, it could be done in some static initialisation phase.

An increasingly interesting toy to study (I would think) would be Categories - the ability to take an existing class and just randomly tack on additional receivers. Perhaps this is exclusive to Objective-C's message-receiver architecture, but it's a curious little technology nonetheless.

Reply via email to