以前は、 appledoc (またはアナログ)をインストールし、
.docset
コンパイルしてインストールする必要があり
.docset
。 これで、 ドキュメンタリーのコメントを書くだけで、クイックヘルプにすぐに表示されます。
サポートされている構文に関する公式ドキュメントはまだありません(少なくとも私は見つかりませんでした)が、 HeaderDocとDoxygenの間で何かが使用されています。
1)
コメントの最初の段落は自動補完で使用され、クイックヘルプでは全員が表示されます。
/** Brief description. Brief description continued. Details follow here. */ - (BOOL)doSomethingWithArgument:(NSString *)argument;
2)
もちろん、標準タグ
@code
@warning
、
@code
@warning
、
@code
他のいくつかのタグ(
@code
@warning
、
@code
@warning
、
@code
@warning
、
@code
など)がサポートされています。
/** Brief description. Brief description continued. Details follow here. @note I am a note! @warning Not thread safe! @param argument Some string. @return YES if operation succeeded, otherwise NO. */ - (BOOL)doSomethingWithArgument:(NSString *)argument;
3)
個々のメソッドだけでなく、クラス全体をドキュメント化できます:
/** Example class to show the new cool XCode 5 feature. Usage example: @code QHExample *example = [QHExample new]; BOOL result = [example doSomethingWithArgument:@"test"]; @endcode */ @interface QHExample : NSObject
4)
文書化プロパティ:
/// Description for exampleProperty. @property (nonatomic) int exampleProperty;
5)
非推奨のメソッドは自動的に決定されます:
/** This method is deprecated! @see '-anotherMethod' */ - (void)someMethod __attribute__((deprecated("use '-anotherMethod' instead.")));
6)
機能もサポートされています。
/** A function that always returns 42. @param fArg Some float argument. @return 42. */ int function_42(float fArg);
しかし、残念ながらマクロはそうではありません。
7)
enum
サポートがあります:
/** ROUChunkType description. */ enum ROUChunkType { /// Data chunk. ROUChunkTypeData = 0, /// Acknowledgement chunk. ROUCHunkTypeAck = 1 };
ただし、 推奨される
NS_ENUM
および
NS_OPTIONS
サポートはありません。
つまり あなたが書く場合:
/** ROUChunkType description. */ typedef NS_ENUM(uint8_t, ROUChunkType){ /// Data chunk. ROUChunkTypeData = 0, /// Acknowledgement chunk. ROUCHunkTypeAck = 1 };
次に、クイックヘルプおよびオートコンプリートの定数の説明が利用可能になりますが、
ROUChunkType
場合は利用できません。
8)
構造タイプの場合、状況はより良いです。タイプ自体については、オートコンプリートに説明はありませんが、クイックヘルプには、フィールドにはthisとthatの両方があります。
/** Chunk header description. */ typedef struct { /// Chunk type. enum ROUChunkType type; /// Chunk length. uint16_t length; } ROUChunkHeader;
9)
ただし、ブロックタイプのドキュメントはうまく機能します。
/** A block with one argument returning BOOL. @param arg Block's argument. @return YES. */ typedef BOOL (^QHBlock)(id arg);
10)
さらに、コメントはインターフェイスだけでなく、変数も含めて実装でもサポートされています。
- (double)perimeter{ /// The number π, the ratio of a circle's circumference to its diameter. double pi = M_PI; return 2 * pi * self.r; }
おわりに
合計すると、ドキュメンタリーのコメントを書くもう1つの理由になりました。 さらに、 コードスニペットを使用する場合、これはまったく時間がかかりません。 たとえば、メソッドを文書化するには、スニペットを作成できます。
/** <#Brief#> <#Description#> @param <#Name#> <#Info#> @param <#Name#> <#Info#> @return <#Returns#> */
それをdocmethod
docmethod
掛けます:
次に、
docmethod
入力する
docmethod
自動補完により適切なテンプレートが自動的に提案されます。