Difference between Category and Class Extension?

后端 未结 9 635
离开以前
离开以前 2020-12-02 07:41

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? Examplif

9条回答
  •  感情败类
    2020-12-02 08:14

    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:

    1. The category has no name. It is declared like this:

      @interface SomeClass ()
      
      
      - (void) anAdditionalMethod;
      
      @end
    2. 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).

提交回复
热议问题