What is the difference between a Category and a Class Extension. I believe both are used to add custom methods in existing classes. Can someone throw light on this? Examplification with code will be really appreciated.
Share
Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.
Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.
Lost your password? Please enter your email address. You will receive a link and will create a new password via email.
Please briefly explain why you feel this question should be reported.
Please briefly explain why you feel this answer should be reported.
Please briefly explain why you feel this user should be reported.
A category is a way to add methods to existing classes. They usually reside in files called “Class+CategoryName.h”, like “NSView+CustomAdditions.h” (and .m, of course).
A class extension is a category, except for 2 main differences:
The category has no name. It is declared like this:
@end
The implementation of the extension must be in the main @implementation block of the file.
It’s quite common to see a class extension at the top of a .m file declaring more methods on the class, that are then implemented below in the main @implementation section of the class. This is a way to declare “pseudo-private” methods (pseudo-private in that they’re not really private, just not externally exposed).