Objective-c language uses "message structure" rather than "function call"
The message structure is represented as follows:
// Messageing (Objective-C)
Object *obj = [Object new];
[obj performWith:parameter and:parameter2];
The function call is represented as follows:
// Function Calling(C++)
Object *obj = new Object;
obj->perform(parameter1, parameter2);
The difference is that, using the language of the message structure, the code executed by the runtime is determined by the runtime environment, and the language used by the function call is determined by the compiler
Objective-c uses a dynamically bound message structure, that is, the type of the object is checked at run time, and what code should be executed after a message is received. There is a run-time environment instead of a compiler to decide.
Objective-c's important work is done by "run-time components" rather than compilers, and all the data structures and functions required to use Objective-c's object-oriented features are in the run-time component, which includes all memory management methods in the run-time component.
A run-time component is essentially a "dynamic library" that is linked to a developer's code, which can glue all the programs written by the developer. So updating the run-time component can improve the performance of your application.
"Effective objective-c" Reading notes (1)