2

in meinem Noob Geist und Verfahren, wenn ich eine Kategorie für eine Klasse zu erstellen, schaffe ich es in einer neuen DateiZiel C Erklärung über Kategorien?

wie NSArray+Shuffle.h and .m

aber ich habe bemerkt, dass, wenn ich zum Beispiel erstellen Viewcontroller,

ich habe bei der Umsetzung:

@interface PingusViewController() 

@end 

@implementation PingusViewController 
... 
@end 

Also meine Frage ist:

Was ist die

@interface PingusViewController() 

@end 

Teil ?, ist dies für Kategorien? oder was nutzen ?, und wenn es für Kategorien ist, warum es hier und nicht in einigen neuen Dateien verwenden?

danke!

Antwort

2

Es heißt Klassenerweiterung.

Betrachten Sie es als den herkömmlichen Speicherort für private Deklarationen Ihrer Klasse.

Sie wird normalerweise in der Implementierungsdatei und nicht in einer Headerdatei deklariert, da die Deklarationen als privat betrachtet werden und nur für die Klasse '@implementation sichtbar sein sollen.

Kategorien OTOH, sind Schnittstellen, die der Autor normalerweise verwendet, um die öffentliche Schnittstelle der Klasse zu erweitern. Die Deklaration ist ähnlich - schließlich ist die Klassenerweiterung nur eine unbenannte Kategorie, aber die Anwendungen sind (durch Konvention) verschieden.