2013-05-31 12 views
5

Po wywiercenie kilku plików nagłówkowych w ramach Foundation (NSString.h na przykład), zauważyłem, że zgłoszenie o NSString wygląda następująco:Dlaczego stwierdzenie kategorię w sam nagłówek jak plik deklaracji klasy

@interface NSString : NSObject <NSCopying, NSMutableCopying, NSSecureCoding> 

/* NSString primitive (funnel) methods. A minimal subclass of NSString just needs to implement these, although we also recommend getCharacters:range:. See below for the other methods. */ 
- (NSUInteger)length;   
- (unichar)characterAtIndex:(NSUInteger)index; 

@end 

Pozostałą część metody są zadeklarowane w kategoriach, które z kolei są zadeklarowane w tym samym pliku nagłówkowym.

Po przeczytaniu this answer, implikacja wydaje się być przeznaczona głównie do organizacji kodu.

Czy istnieje korzyść (inna niż logiczne grupowanie metod) do deklarowania kategorii w tym samym nagłówku co deklaracja klasy, szczególnie w przypadku, gdy implementacja jest ukryta, jak w przypadku NSString?

Odpowiedz

8

Ogólnie rzecz biorąc, kategorie są używane do celów organizacyjnych. Ale w przypadku NSString są używane głównie dlatego, że NSString jest klastrem klasy. Jako takie, kategorie są używane do definiowania dodatkowych metod (w przeciwieństwie do metod pierwotnych) klas w klastrze.

Jest ładny napis o klastrach klas od Mike Ash here.

Powiązane problemy