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
(traditional API) instead of
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
Method) and can not be used at the same time.