2010-01-11 13 views
11

Obwohl die neuesten Versionen von Doxygen claim better handling of Objective-C categories, scheint es immer noch auf Kategorien in meinem Quellcode zu ersticken. Ich frage mich, ob jemand es geschafft hat, Kategorien richtig zu dokumentieren.Doxygen und Objective-C Kategorien

Als Beispiel habe ich eine Kategorie auf NSString wie folgt definiert:

@interface NSString (CCFExtensions) 

mit einer Schnittstelle Datei mit dem Namen NSString_CCFExtensions.h und Implementierungsdatei NSString_CCFExtension.m

Doxygen wird die Datei mit der übergeordneten Klasse verweisen ; aber keine der Methoden der Kategorie ist trotz scheinbar gültiger Doxygen-Syntax dokumentiert.

Was ist das korrekte Quellmarkup, damit Objective-C-Kategorien funktionieren?

Antwort

14

Nach einiger Regressionstests (und ein wenig gesunden Menschenverstand) die Lösung:

Lassen Sie uns sagen, dass ich eine Kategorie Cat1 auf NSObject haben, für doxygen meiner Kategorie Header-Datei zu analysieren, sollte es in etwa wie folgt aussehen:

#import <Cocoa/Cocoa.h> 

/*! \category NSObject(Cat1) 
    \abstract A category on NSObject 
*/ 

@interface NSObject(Cat1) 
    - (void)foo; 
@end 

und die Implementierungsdatei:

#import "NSObject_Cat1.h" 

@implementation NSObject(Cat1) 

- (void)foo { 
    // do something 
} 

@end 

Wichtig ist, legen Sie keine Leerzeichen zwischen dem Klassennamen und dem Kategorienamen.