代码之家  ›  专栏  ›  技术社区  ›  Quinn Taylor

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

  •  7
  • Quinn Taylor  · 技术社区  · 17 年前

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

    目标:

    documentation for my custom subclasses (由Doxygen生成)包括NS(Mutable)Dictionary最常见方法的描述,这样用户就不必只查看特定自定义字典继承不变的方法。此外,有时文档必须反映由重写的基元方法引起的不同功能,尽管方法实现与NS(Mutable)Dictionary没有变化。

    当只记录了重写的方法时,我没有收到任何错误/警告。如果我添加注释来记录继承的方法,Doxygen会抱怨(并且不会生成所述文档),除非我在头文件中添加方法原型。如果我添加一个原型,编译器会发出一个警告,说明实现已完成,因为它不包括所声明方法的方法定义。显然,这是一种方法存在于父类中的情况,但编译器在实现它时很固执,因为原型基本上是在子类中重新声明的。

    问题:

    • 是否有可能使Xcode/gcc对从父类继承的方法取消“找不到'X'的方法定义”警告?
    • \fn 命令,但得到了相同的结果。

    编辑:

    据我所知,第一个问题的答案既有是也有否。从技术上讲,使用 -Wno-protocol option 使GCC抑制关于似乎没有实现所有协议方法的类的编译时警告。然而,这掩盖了那些真正

    1 回复  |  直到 17 年前
        1
  •  2
  •   mouviciel    17 年前

    据我所知,你三个问题的答案是:没有。

    我想提请你注意这样一个事实,即苹果文档没有在子类文档中记录继承的方法。

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

    关于这些通用方法在子类上的具体行为,我只想在 详细描述 章。

    无论如何,一个可能的解决方法是同时给出继承方法的声明和实现。但仅仅出于文档目的,这有点矫枉过正:

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