文档继承了没有Doxygen /编译器警告的Obj-C方法?

时间:2009-06-16 16:41:51

标签: objective-c cocoa xcode gcc doxygen

背景

我正在Objective-C中创建复合字典数据结构的层次结构,并且继承自NSMutableDictionary,因此这些类可以在任何需要NSDictionary / NSMutableDictionary的地方使用。 (正如人们不认为我重新发明轮子,每个人都使用CFMutableDictionaryRef,加上一些额外的结构,按照排序顺序,插入顺序等存储密钥。)为了与Apple的文档保持一致,我已覆盖必要的NSDictionary primitivesNSMutableDictionary primitives,其中所有其他方法都使用这些方法。

目标:

由于我努力完全记录我的框架的API,我希望documentation for my custom subclasses(由Doxygen生成)包含NS(Mutable)Dictionary最常用方法的描述,因此用户不必仅查看另一个页面只是特定自定义词典继承的方法。此外,有时文档必须反映由重写的原始方法引起的不同功能,尽管NS(Mutable)Dictionary中的方法实现没有改变。

问题:

当只记录被覆盖的方法时,我没有错误/警告。如果我添加记录继承方法的注释,Doxygen会抱怨(并且不会生成所述文档),除非我将方法原型添加到头文件中。如果我添加原型,编译器会发出一个警告,表明实现已完成,因为它不包含声明方法的方法定义。显然,这是一种方法,其中该方法存在于父类中,但编译器是实现它的坚持者,因为原型基本上是在子类中重新声明的。

问题:

  • 是否可以使Xcode / gcc禁止“找不到'X'的方法定义”从父类继承的方法的警告?
  • 是否可以强制Doxygen为不存在泄漏的方法创建文档?我尝试使用\fn命令,但得到了相同的结果。
  • 是否有可能欺骗Doxygen以为我写的文档实际上适用于NSMutableDictionary,但它是否出现在我的所有自定义子类中?

编辑:

据我所知,第一个问题的答案是肯定和否定。从技术上讲,使用-Wno-protocol option(或取消选中Xcode构建设置中的“不完整的Objective-C协议”警告)导致GCC禁止编译时警告有关不显示的类实现所有协议方法。但是,这掩盖了真正实现所有必要方法的类的问题。为了构建一个使用协议的框架,这真的不是一个选择。目前,GCC似乎并不了解从链接(非源)父类继承的方法。

1 个答案:

答案 0 :(得分:2)

据我所知,回答你的三个问题是:不。

我想提请您注意Apple文档没有记录子类文档中的继承方法。

此外,NSDictionaryNSMutableDictionary并不需要提醒他们最常见的方法。对我来说,现有文档的链接已经足够了。

关于您对子类的这些常用方法的具体行为,我只需在详细说明章节中插入专用部分。

无论如何,一种可能的解决方法是同时提供继承方法的声明和实现。但是出于文档目的,这有点过分:

- (NSArray *) allValues
{
    return [super allValues];
}