Actually, I don't know of any backwards-compatibility problems with Objective-C.
There is the issue of loading standard UNIX libraries on Mac OS X, but that's not a problem involving Objective-C itself.
All C functionality can be used in Objective-C code. There is a main() function that works just as you would expect. You can freely intermix C and Obj-C.
Think of Objective-C objects as wrappers for functions and data.
So, instead of:
int foo;
int setfoo(int value)
{
foo = value;
}
int readfoo()
{
return foo;
}
setfoo(23);
printf("%d", readfoo() );
You would declare on Obj-C object:
@interface myObject : NSObject
{
int foo;
}
- (int) readfoo;
- (int) setfoo:(int)value;
@end
@implementation myObject
- (int) readfoo
{
return foo;
}
- (int) setfoo:(int)value
{
foo = value;
return foo;
}
@end
-------------
The above code encapsulates the variable foo, and all functions to work on it, in an objective-C object.
Now, to read the variable foo, and print it with printf, I can do the following:
printf("%d",[myObject readfoo]);
As you can see, it acts just like the C function that I wrote above, readfoo().
In this light, Objective-C is used to encapsulate all variables, and the operations on those variables in a single object. Furthermore, the @interface section can be placed in a header file, so all the developer has to do is find the object they want to use in that header file, and look up the methods they wish to call, and all the syntax therein. They don't need to know about how the object goes about its business. All they need to know is what the object returns, and what variables it expects on input.
You do not have to declare all methods in the interface either.
Also, it is OK to call a method that may not have been declared for an object.
It is also possible to intermix Obj-C and C++, though you cannot use a C++ object as if it were an Obj-C object.
I have not listed all of the advantages and points about Objective-C, please visit:
http://developer.apple.com/documenta...al/ObjectiveC/
for more information on the Obj-C language.
You may notice that Objective-C does basically the same thing as C++ using object encapsulation. I believe that it does it in a cleaner, more understandable manner.