.
As the name suggests, they extend the class. A class Continuation is another name. The class extension is commonly used to declare private methods and properties. You want the class extension @implementation to is visible to the, and not in the header file.
Types and methods in the header file is generally intended to being public--available to any client.
Example:the property declared in the class extension won't be visible/accessible to clients who #import the header, but It'll be usable by the because the can see the declarations of the @implementation @implementation class extension.
So this can is used to emulate restricted access for your ivars and methods. This was useful because OBJC methods and properties cannot be specified as private/protected/public (e.g. using @public ).
Class extensions differ from categories primarily because extensions may declare storage (e.g. properties which would produ CE backing Ivars).
.
The differences between class Extension and header file class extensions differ from header files