1

mogeneratorを使用してCore Dataクラスを生成します。Mogenerator は、機械クラスと人間クラスを生成します。これらは mogenerator が呼び出されるたびに生成されるため、開発者はマシン生成クラスを変更することは想定されていません。ただし、ヒューマン クラスは、開発者が望むように変更できます。

マシン クラスには、Core Data エンティティのすべてのプロパティの宣言が含まれています。Doxygen では、ファイル B からファイル A で定義されたプロパティをどのように文書化しますか?

編集:質問を説明するために例を追加

例:

最終的に、ここでの目標は、以下の例に似たものにすることです。

FileA.h (変更不可)

@interface FileA : NSObject
{
   NSString* myProperty;
}
@end

FileB.h

#include "FileA.h"

@interface FileB : FileA
{
   /**
    * @property myProperty
    *
    * This is the documentation of "myProperty" 
    * defined in FileA but documented in FileB
    */
}
@end

試してみました (@interface FileB @end ブロック内のドキュメント ブロック):

@property myProperty - Doxygen はドキュメントをプロパティに関連付けません。

\property myProperty - Doxygen はドキュメントをプロパティに関連付けません。

@property FileA::myProperty - Doxygen はドキュメントをプロパティに関連付けずに生成します。警告: FileB::myProperty に一意に一致するクラス メンバーが見つかりません

\property FileA::myProperty - 同上

解決

FileB.h

#include "FileA.h"

   /**
    * @property FileA::myProperty
    *
    * This is the documentation of "myProperty" 
    * defined in FileA but documented in FileB
    *
    * Documentation block MUST BE outside FileB class
    *
    */

@interface FileB : FileA
{
}
@end
4

2 に答える 2

1

文書化する必要があるかどうかは (私には) 不明ですFileAが、文書化を に挿入することはできませFileA.hん。FileAFileB

前者の場合、クラスFileAのドキュメントを提供できますFileB.h。これは次のようになります。

/**
 * @class FileA
 * Documentation for FileA
 *
 * @var FileA::myProperty
 * Documentation for myProperty
 */

/**
 * Documentation for FileB
 */
@interface FileB : FileA
{
}

@end

これにより、生成されたドキュメントにクラスFileAとが表示され、 のメンバーとしてドキュメント化されます。FileBmyPropertyFileA

後者の場合、myPropertyのメンバーとして宣言できますがFileB、プリプロセッサ ガードを使用して、ドキュメントを生成するときに宣言のみを含めることができます。

/**
 * document FileB
 */
@interface FileB : FileA
{
#ifdef DOXYGEN
    /**
     * This is the documentation of "myProperty" 
     * defined in FileA but documented in FileB
     */
    NSString* myProperty;
#endif
}

@end

これにより、あたかもそのメンバーの 1 つであるかのFileBように文書化されます。の宣言が変更された場合は、それらの変更を反映するために手動での宣言を更新する必要がmyPropertyあることに注意してください。myPropertyFileAFileB

于 2012-01-12T05:12:50.563 に答える
0

たとえば、Doxygen のrefコマンドを使用して、アンカー (ファイル、名前空間、クラス、関数、変数、列挙型など) を参照できます。

\ref variable_name

文書化する変数がローカルの名前空間またはスコープにない場合は、変数名の前に を付けることができますnamespace::。ここnamespaceで、 は参照している変数が定義されているスコープまたはクラスです。たとえば、次の 2 つのファイルを考えてみます (Doxygen マニュアルの例を変更したもの)。

ファイル 1 :

///  A test class.
/**
  A more elaborate class description.
*/
class Test
{
  public:

  /// An enum.
  /** More detailed enum description. */
  enum TEnum {
               TVal1, ///< Enum value TVal1.
               TVal2, ///< Enum value TVal2.
               TVal3  ///< Enum value TVal3.
             }
      /// Enum pointer.
      /** Details. */
      *enumPtr,
      /// Enum variable.
      /** Details. */
      enumVar;

  /// A constructor.
  /**
    A more elaborate description of the constructor.
  */
  Test();
};

ファイル 2 :

//  Another test class.
/**
  This class depends on the variable \ref Test::TEnum, defined in another file.
  It doesn't, actually, but I've said it does.
*/
class AnotherTest
{
  public:

  /// A constructor
  AnotherTest();

};

ここでは、最初のファイルTEnumのクラスで定義されています。Testしたがって、2 番目のファイルでは、変数名の前に変数が定義されているクラスを付けTest::TEnumます。

グローバル名前空間プレフィックスの詳細については、名前空間で宣言された static const 変数を参照するという質問に対する受け入れられた回答を参照してください::

于 2012-01-11T12:28:48.390 に答える