Разница между категорией и расширением класса?

В чем разница между категорией и расширением класса. Я считаю, что оба используются для добавления пользовательских методов в существующие классы. Может кто-то пролить свет на это? Пример с кодом будет очень признателен.

83
задан Dan Rosenstark 19 September 2011 в 02:56
поделиться

1 ответ

Категория - это способ добавления методов к существующим классам. Обычно они находятся в файлах с именем «Class + CategoryName.h», например «NSView + CustomAdditions.h» (и, конечно, .m).

Расширение класса - это категория, за исключением двух основных отличий:

  1. Категория не имеет имени. Он объявлен так:

     @interface SomeClass ()
    
    
     - (недействительно) anAdditionalMethod;
    
    @end
  2. Реализация расширения должна находиться в основном блоке @implementation файла.

Довольно часто можно увидеть расширение класса в верхней части файла .m, объявляющее больше методов класса, которые затем реализуются ниже в основном разделе @implementation класса. Это способ объявления «псевдоприватных» методов (псевдо-частных в том смысле, что они не совсем частные, просто не доступны извне).

101
ответ дан 24 November 2019 в 08:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: