objc_getClassList(_:_:)
Obtains the list of registered class definitions.
Declaration
func objc_getClassList(_ buffer: AutoreleasingUnsafeMutablePointer<AnyClass>?, _ bufferCount: Int32) -> Int32Parameters
- buffer:
An array of
Classvalues. On output, eachClassvalue points to one class definition, up to eitherbufferCountor the total number of registered classes, whichever is less. You can passNULLto obtain the total number of registered class definitions without actually retrieving any class definitions. - bufferCount:
An integer value. Pass the number of pointers for which you have allocated space in
buffer. On return, this function fills in only this number of elements. If this number is less than the number of registered classes, this function returns an arbitrary subset of the registered classes.
Return Value
An integer value indicating the total number of registered classes.
Discussion
The Objective-C runtime library automatically registers all the classes defined in your source code. You can create class definitions at runtime and register them with the objc_addClass function.
The code listing below demonstrates how to use this function to retrieve all the class definitions that have been registered with the Objective-C runtime in the current process.
int numClasses;
Class * classes = NULL;
classes = NULL;
numClasses = objc_getClassList(NULL, 0);
if (numClasses > 0 )
{
classes = malloc(sizeof(Class) * numClasses);
numClasses = objc_getClassList(classes, numClasses);
free(classes);
}Special Considerations
You can’t assume that class objects you get from this function are classes that inherit from NSObject, so you can’t safely call any methods on such classes without detecting that the method is implemented first.