• HeadDoc自动注释语法


    记录于2013/4/23:

    关于HeaderDoc注释和标签的简要介绍

    每个HeaderDoc注释可分为顶级标签和第二级标签:
    (1)顶级标签:宣布API的声明类型 (function, struct, enum, 等等),是可选择的。 也可为空
    (2)第二级标签:给予声明的额外信息 如@abstract  指定抽象
         (@abstract and @discussion)  为紧接顶级标签的两个第二级标签,是可择选的,但建议要有该字段
         @abstract:用在摘要列表
         @discussion: 用在详细文档中 
     
    •第二级标签根据其行为可进一步细分为以下几类:
    attribute -  一个标签内容出现在属性列表的行中,该标签直到下一个block或则attribute标签出现为止。
    block - 包含多个文字段落,通常显示为一个正常的文本块(通常是标题开头).该标签直到下一个block或则attribute标签出现为止。
    flag -  修改一个标签声明的行为,包括是否发出它在某些情况下(例如:@parseOnly)。标志标签不带任何参数。
    HTML tagging - 影响HTML标记,而不是直接作为输出的一部分发出。
    inline - 一个标签可以出现在一个段落里面大多数标签(名称或标题字段除外)。内嵌标签的内容不会破坏文本流。
    page footer -  一个标签,出现在页脚中的每个内容页底部的修改内容 (例如:@copyright)  
    parsing - 修改源代码文件解析的方式
    term & definition - 根据该标签包含的内容行数分成第一行或则换行两部分,区分规则和顶端标签一样,规则在“Multiword Names”定义。 
     
    •在HeaderDoc 8.6之后的版本中,第二级标签可以出现在HeaderDoc注释的任意位置,但是以下三个是例外:
    @const, @constant, and @var 这些tag不能出现在一个HeaderDoc注释的开头,因为它们与顶级标签相冲突
     
     

    HeaderDoc一些变种注释风格。特别是,你可以有这样一行注释:
    /*! @var settle_time Latency before next read. */
     
     

    •可以在一个多行注释前添加星号(但必须保持一致性)
     
    /*!
     
    @function HMBalloonRect
     
    @abstract Reports size and location of help ballon.
     
    @discussion Use HMBalloonRect to get information about the size of a help balloon
     
    before the Help Manager displays it.
     
    @param inMessage The help message for the help balloon.
     
    @param outRect The coordinates of the rectangle that encloses the help message.
     
    The upper-left corner of the rectangle has the coordinates (0,0).
     
    */
     
     

    • 如果想要换行显示discussion,则需要键入两次换行健,即中间要空一行;这样就可以分两行显示
     
    /*!
     
    * @function HMBalloonRect
     
    * @discussion Use HMBalloonRect to get information about the size of a help balloon
     
    * before the Help Manager displays it.
     
    *
     
    * Always check the help balloon size before display.
     
    */
     
     

    Multiword Names:
    复名(多文字名称): 顶层标记(如@header and @function等)可采用多个字的名称,但是通常HeaderDoc无法判断是多字名称还是discussion 
     
     

    自动标注: 
    (1)Numbered lists:它不再是必要的标记编号列表<OL> <LI>。 HeaderDoc会自动检测编号列表。
    (2)像@function, @class, and @typedef 这样的声明类型的标签在HeaderDoc 8以后会自动添加,不需要声明,除非你试图到覆盖HeaderDoc的正常行为。 
    (3)可用性宏(Availability macros):它不再是必要利用@ignore忽略可用性宏
     


     
     
     
    所有HeaderDoc注释类型的通用标签

    可用在任何数据类型、函数、头文件或则类中 。
    下面仅列出较为常用的几个标签;其他标签可到官方文档中查看;
     
    Tag
    Example
    Identifies
    Usage
    @abstract
    @abstract write the track to disk
    一个简短的字符串简要描述一个函数,数据类型等等,只能为1行。保存discussion的详细说明
    block
    (single short sentence recommended)
    @availability
    @availability 10.3 and later
    一个字符串描述函数、类等等的可用性 
    attribute
    @discussion
    @discussion This is what this function does. @some_other_tag
    一个文本块,详细描述一个函数,类,标题,或数据类型;它即可包含多个字断也可省略;但是如果你的数据类型、函数、类或头名中存在多个字段,则改文本块就必须存在;该文本块仅在另一个标签开始时才结束
    block
    @namespace
    @namespace BSD Kernel
    一个字符串描述函数、数据类型等所存在的命名空间
    attribute
    @updated
    @updated 2003-03-14
    header的更新时间
    attribute
     
    官方文档:
     
     
     
    但有些标签仅在特定的context中才有效:

    Functions, Methods, and Callbacks:(函数、方法和回调)
    顶端标签:@function, @method, @callback
     @function用于C函数,而 @method用于Objective-C方法,这两个可以互换
     
    Tag
    Example
    Identifies
    Type
    @param
    @param myValue The value to process.
    描述函数或回调的参数
    attribute (term & definition)
    @result
    @result Returns 1 on success, 0 on failure..
    描述该函数返回的值,如果函数类型是void或者OSERR则不写该标签
    attribute (term & definition)
    @return
    @return Returns 1 on success, 0 on failure..
    同上
    attribute (term & definition)
    @throws
    @throws bananas
    该函数的每个异常抛出都包含一个@throws标签(如果支持异常)
    attribute
    @var
    @var myVar
    Description goes here
    标记一个函数或方法的局部变量;
    注意:不能作为函数或者方法的顶端标签
    Term & definition
     

    Constants and Variables:(常量和变量)
    顶端标签:@var, @const, @constant
    •@var: 在标记全局变量、类变量、实例变量时会被用到(而不是声明新的数据类型或宏)
    •常量被标记为:@const 或者 @constant
    •变量和常量的声明没有与他们相关联的特殊二级标签
     
    @const标签使用例子:
     
    /*!
     
    @const kCFTypeArrayCallBacks
     
    @abstract Predefined CFArrayCallBacks structure containing a set of callbacks appropriate...
     
    @discussion Extended discussion goes here.
     
    Lorem ipsum....
     
    */
     
    const CFArrayCallBacks kCFTypeArrayCallBacks;
     
    @var标签使用例子:
     
     
    /*!
     
    @var we_are_root
     
    @abstract Tells whether this device is the root power domain
     
    @discussion TRUE if this device is the root power domain.
     
    For more information on power domains....
     
    */
     
    bool we_are_root;
     
     
     

    Properties:(属性)
    顶端标签:@property
    •它支持@method 和 @var 所支持的任一标签
    •注意:JavaScript属性应该被标记为普通变量。
     

    Structures and Unions:(结构、联合)
    顶端标签:@struct, @union, @typedef
    结构、联合、typedef声明所包含的结构、联合可以包含回调(callbacks)和字段(fields)。
    相应的第二级标签描述如下:
     
    Tag
    Example
    Identifies
    Type
    @callback
    @callback testFunc The test function to call.
    指定结构中的一个回调字段的名称和描述 
    attribute (term & definition)
    @field
    @field isOpen Specifies whether the file descriptor is open.
    结构声明中的一个字段 
    attribute (term & definition)
     
    @struct的使用例子:
     
     
    /*!
     
    @struct TableOrigin
     
    @abstract Locates lower-left corner of table in screen coordinates.
     
    @field x Point on horizontal axis.
     
    @field y Point on vertical axis
     
    @discussion Extended discussion goes here.
     
    Lorem ipsum....
     
    */
     
    struct TableOrigin {
     
    int x;
     
    int y;
     
    }
     
     

    Enumerations:(枚举)
    顶端标签:@enum, @typedef
    •唯一的特定与枚举的的标签是@const 和 @constant;
    Tag
    Example
    Identifies
    Type
    @constant
    @const
    @const kSilly A silly return value.
    枚举中的常量
    attribute (term & definition)
    enum declarations only 
    (1)枚举的使用例子:
     
    /*!
     
    @abstract Categorizes beverages into groups of similar types.
     
    @constant kSoda Sweet, carbonated, non-alcoholic beverages.
     
    @constant kBeer Light, grain-based, alcoholic beverages.
     
    @discussion Extended discussion goes here.
     
    Lorem ipsum....
     
    */
     
    enum beverages {
     
    kSoda = (1 << 6),
     
    kBeer = (1 << 7)
     
    };
     
     
    (2)匿名枚举的使用例子()
     
     
    /*!
     
    @enum Beverage Categories
     
    @abstract Categorizes beverages into groups of similar types.
     
    @constant kMilk Dairy beverages.
     
    @constant kWater Unflavored, non-sweet, non-caloric, non-alcoholic beverages.
     
    @discussion Extended discussion goes here.
     
    Lorem ipsum....
     
    */
     
    enum {
     
    kMilk = (1 << 8),
     
    kWater = (1 << 9)
     
    };
     
     

     


    Type Definitions:(类型定义)

    顶端标签:@typedef
    •根据@typedef声明的内容决定可在@typedef标签后显示的标签;例如:一个typedef enum声明拥有enum声明所包含的任何内容。
    •一个@typedef命令可以包括以下任何一个:
    (1)typedef struct 声明中的@field(字段) 
    (2)typedef enum 声明中的@constant(常量)
    (3)单独函数指针类型的typedef声明中的@param(参数)
     
    (1)typedef struct用例:
     
     
     
    /*!
     
    @typedef TypedefdSimpleStruct
     
    @abstract Abstract for this API.
     
    @field firstField Description of first field
     
    @field secondField Description of second field
     
    @discussion Discussion that applies to the entire typedef'd simple struct.
     
    Lorem ipsum....
     
    */
     
    typedef struct _structTag {
     
    short firstField;
     
    unsigned long secondField
     
    } TypedefdSimpleStruct;
    (2)typedef enum用例:
     
     
    /*!
     
    @typedef TypedefdEnum
     
    @abstract Abstract for this API.
     
    @constant kCFCompareLessThan Description of first constant.
     
    @constant kCFCompareEqualTo Description of second constant.
     
    @constant kCFCompareGreaterThan Description of third constant.
     
    @discussion Discussion that applies to the entire typedef'd enum.
     
    Lorem ipsum....
     
    */
     
    typedef enum {
     
    kCFCompareLessThan = -1,
     
    kCFCompareEqualTo = 0,
     
    kCFCompareGreaterThan = 1
     
    } TypedefdEnum;
     
    (3)函数指针的typedef用例:
     
     
    /*!
     
    @typedef simpleCallback
     
    @abstract Abstract for this API.
     
    @param inFirstParameter Description of the callback's first parameter.
     
    @param outSecondParameter Description of the callback's second parameter.
     
    @result Returns what it can when it is possible to do so.
     
    @discussion Discussion that applies to the entire callback.
     
    Lorem ipsum...
     
    */
     
    typedef long (*simpleCallback)(short inFirstParameter, unsigned long long *outSecondParameter);
     
     
     
     
     


    常用注释示例:
     
    /*!
     @header       
     @abstract    摘要描述
     @discussion  详细描述
     
     @namespace    命名区间
     @updated      2013-02-21
     
     @author      作者
     @version      版本信息
     */
    #import <UIKit/UIKit.h>
    #import "NSData+extend.h"
     
    /*!
     @enum
     @abstract      摘要描述
     @discussion    详细描述
     @constant      const1      常量1
     @constant      const2      常量2
     */
    typedefenum
    {
    const1 = 1,
    const2 = 2
    }Status;
    /*!
     @protocol
     @abstract      摘要描述
     @discussion    详细描述
     
     @namespace    命名区间
     @updated      2013-02-21
     */
    @protocol ViewDelegate <NSObject>
    @end
    /*!
     @class       
     @abstract      摘要描述
     @discussion    详细描述
     */
    @interface ViewController : UIViewController{
     
        /*!  UITableView成员变量. */
        UITableView *tableView;
    }
    /*! @var settleString NSString成员变量. */
    @property (nonatomic,retain) NSString *string;
    /*!
     @method       
     @abstract      摘要描述
     @discussion    详细描述
     
     @param        sender      参数1 (这里把这个方法需要的参数列出来)
     @param        idSender    参数2
     @return        string      字符串
     */
    -(NSString *)btnClicked:(UIButton *)sender AndID:(id)idSender;
    @end
     
     
    /*!
     @category
     @abstractNSData的Category
     */
    @interfaceNSData (extend)
    @end
  • 相关阅读:
    LeetCode 50: Pow(x, n)
    Codility 1: equilibrium
    LeetCode 49: Anagrams
    crackme160--(5)
    crackme160--(4)
    魔兽显血改键工具的脱壳和修改
    crackme160--(3)
    crackme160--(1)
    python-装饰器
    编程语言C++01-C++入门学习路线
  • 原文地址:https://www.cnblogs.com/ios-wmm/p/10215606.html
Copyright © 2020-2023  润新知