Previous: Modern GNU Objective-C runtime API, Up: GNU Objective-C runtime API


8.1.2 Traditional GNU Objective-C runtime API

The GNU Objective-C runtime used to provide a different API, which we call the “traditional” GNU Objective-C runtime API. Functions belonging to this API are easy to recognize because they use a different naming convention, such as class_get_super_class() (traditional API) instead of class_getSuperclass() (modern API). Software using this API includes the file objc/objc-api.h where it is declared.

The traditional API is deprecated but it is still supported in this release of the runtime; you can access it as usual by including objc/objc-api.h.

If you are using the traditional API you are urged to upgrade your software to use the modern API because the traditional API requires access to private runtime internals to do anything serious with it; for this reason, there is no guarantee that future releases of the GNU Objective-C runtime library will be able to provide a fully compatible objc/objc-api.h as the private runtime internals change. It is expected that the next release will hide a number of runtime internals making the traditional API nominally supported but fairly useless beyond very simple use cases.

Finally, you can not include both objc/objc-api.h and objc/runtime.h at the same time. The traditional and modern APIs unfortunately have some conflicting declarations (such as the one for Method) and can not be used at the same time.