Doxygen似乎对Objective-C类别进行了特殊处理,我想知道其他人是否能够成功解决它。我想doxygen将类中的所有类别记录为单独的实体,而不管是否记录了基类。
如果我将doxygen标记添加到未记录的基类的类别 - 比如NSString,那么doxygen会将类列表中的类别及其方法列为单独的实体。
/**
* @category NSString(Foo)
* @brief A sample category on NSString
*/
@interface NSString(Foo)
@end
在类列表中记录实体NSString(Foo)。
但是,以下示例不:
/**
* @category CCFMyCustomClass(Foo)
* @brief A category on a documented base class
*/
@interface CCFMyCustomClass(Foo)
@end
相反,在后一种情况下,CCFMyCustomClass(Foo)上的所有方法都包含在CCFMyCustomClass的文档中 - 基类。
以下虽然经常被引用,但似乎没有帮助解决这个问题:
答案 0 :(得分:3)
您可以跳过Doxygen并使用AppleDoc。
appledoc是命令行工具,可帮助Objective-C开发人员从特殊格式的源代码注释中生成类似Apple的源代码文档。它旨在为输入提供尽可能可读的源代码注释,并使用注释以及周围的源代码,以HTML的形式生成视觉上吸引人的文档以及完全索引和可浏览的Xcode文档集。虽然有几种工具可以为Objective-C创建HTML文档,但我所知道的所有这些工具都达不到下述最低目标。
也可在GitHub
上找到答案 1 :(得分:0)
一个解决方案,虽然不理想,但是为类别方法创建一个组,以便至少它们在基类文档页面上组合在一起。
符合上面的第二个例子:
/** @name CCCFMyCustomClass(Foo)
Methods defined only in CCFMyCustomClass(Foo) category */
//@{
/**
*
* @method someFooMethod
* @brief Does some foo things
* @details First foo, then more foo, etc.
*/
- (void)someFoodMethod;
//@}
除此之外,我发现没有其他方法可以在记录的基类上分离出类别。
答案 2 :(得分:0)
我想再投票给Appledoc。对于Objective-C而言,比Doxygen更容易获得良好的结果。
答案 3 :(得分:0)
我记录了我的类(在头文件中),如:
/**
@interface MyAppDelegate
@mainpage The iPhone App
This is information about my app, and appears in the main HTML page.\n\n
As with all iOS apps, the main entry point is an App Delegate @see MyAppDelegate
@defgroup Classes Classes
@{
@brief Miscellaneous Classes
Classes that don't fit in any other category
@{
*/
/**
@brief The application's delegate
A delegate object is instantiated by the main function, so this is effectively the main entry point for the app
@see MyAppDelegate()
*/
@interface MyAppDelegate : UIResponder <UIApplicationDelegate>
...
@end
/** @} */
/** @} */
.m文件有一个扩展类别,我有自己的私有扩展方法。这看起来像:
/**
@category MyAppDelegate(internal)
@addtogroup Classes
@{
*/
/**
@brief Application delegate class extension
Internal extension for the application delegate
@see MyAppDelegate
*/
@interface MyAppDelegate()
...
@end
/** @} */
@implementation MyAppDelegate
...
etc
我得到两个html页面 - 对于MyAppDelegate和MyAppDelegate()第一个包括一个see-also for the second,虽然see-also在第二个回到第一个不起作用(看起来有问题使用@see category()。然而,方法在两个页面之间正确分割。
我认为关键是只记录不在@implementation块内的Objective-C @interface块内的方法。我还使用@defgroup和@addtogroup块将特定类型的所有模块(如View Controllers,Models等)组合在一起。
我希望这有助于某人