原版的: http://www.raywenderlich.com/66395/documenting-in-xcode-with-headerdoc-tutorial

了解如何从代码中生成文档!

Xcode 5 和 iOS7 宣布。数人可能没有注意到 HeaderDoc。

HeaderDoc 是一个命令行工具,同意你从代码中自己主动生成格式良好的HTML 文档——当然,凝视必须是用指定的格式提供的。

另外,Xcode 还会在 quick look 面板中以 HeaderDoc风格显示你的凝视。

通过本教程,你将学习:

  1. 怎样书写 HeaderDoc 风格的凝视
  2. 怎样在 Xcode 中预览文档
  3. 怎样生成 HTML 文档
  4. 怎样使用 VVDocumenter-Xcode(一个易于使用的第3方文档制作工具)

让我们快点開始吧!

開始

下载本教程中用到的 演示样例项目,build & run。

这个简单的演示样例程序只包括了两个类:

  • Car: 包括几个属性及一个 “drive” 方法以及一个 completion 块。

  • MathAPI: 包括了1个方法,用于累加两个数。

如今,这两个类还没有不论什么凝视。我们将演示怎样通过 HeaderDoc 为这两个类创建文档。

HeaderDoc 凝视

HeaderDoc 能够从命令行中执行,也能够通过 Xcode 执行。它扫描文件里以某种格式书写的凝视,包括这3种形式:

凝视 1:

/// Your documentation comment will go here

凝视 2:

/**  * Your documentation comment will go here  */

凝视 3:

/*!  * Your documentation comment will go here  */

这些凝视和普通凝视没有什么不同。除了:

凝视1。多了一个 /

凝视2。多了一个 *

凝视3,多了一个 !

注意:在凝视2和凝视3中,在每一行开头都会有一个额外的*,直至结尾的 */。

这不过为了美观,而不是必须的。

这3中语法在 Xcode 中都将产生相同的文档。

为了便于理解。本文将採用下列规则:

  • 对于较长的凝视块。我们使用 /*!

    凝视。

  • 对于单行凝视。我们使用 ///。

HeaderDoc 标签

当 HeaderDoc 发现上述3种凝视。它就開始寻找当中的HeaderDoc 标签。你能够用 HeaderDoc 标签修饰你的凝视。

HeaderDoc 标签以 @ 符号开头。然后是keyword,然后是一个空格。最后才是对应的文本(比如 @param foo)。HeaderDoc 标签能够分为两种:

  • 顶级标签: 这些标签声明所要凝视的对象的类型(比如头部声明、类、方法等等)。
  •  二级标签:这些标签才是详细的凝视内容。

顶级标签,比如 @typedef,用于表示 typedef 定义的类型,比方枚举、结构体和函数指针。

HeaderDoc 能够依据上下文自己主动产生顶级标签,因此通常不是必须的。

在本教程,这里有一些经常使用的二级标签:

  • @brief: 简单描写叙述你准备文档化的数据的类型,方法等等。

  • @abstract: 等于 @brief。

  • @discussion: 相似 @abstract 和 @brief。但同意多行。它不是必须的,不过为了使描写叙述更清晰。
  • @param: 描写叙述方法、回调或函数的參数名称。
  • @return: 描写叙述方法或函数的返回值。(等同于 @result)

完整的标签列表请參见 HeaderDoc User Guide

为了保持实现文件的整洁,本文中全部凝视都书写在头文件里。

属性的文档化

首先開始对属性进行文档化。

用 Xcode 打开DocumentationExamples 项目, 打开ViewController.h,你会发现有两个属性须要文档化。在 car 属性的十分,加入一行凝视:

/*!  * @brief The ViewController class' car object.  */

@property (nonatomic) Car *car;

编译项目。

编译结束,按住 alt/option 键,点击 car 变量名。你将看到pop 菜单中显示了刚才的凝视内容。

问题:假设 pop 菜单中未显示凝视内容。可能编译尚未结束。等编译结束,重新启动 Xcode。然后重试。

一切如此简单。

请你试着对还有一个属性进行凝视。

比如:这个属性是汽车的名字。建议有趣一点等等。

/*!  *@brief A Title for the car. Make it funny. Seriously.  */

在完毕文档化之前,能够在 Xcode 中以还有一种方法预览文档。切换到Utitlities 面板的 Quick Help 检查器窗体。点击 car 变量名,通过 Quick Help,你将看到例如以下效果:

如今,有两个类须要进行文档化: MathAPI和Car。

方法的文档化

MathAPI包括一个方法须要文档化。

打开MathAPI.h,找到addNumber:toNumber:。

这种方法有两个參数及一个返回值。因此须要一个 @description 标签、两个@param标签,以及一个@return 标签。如以下所看到的:

/*!  * @discussion A really simple way to calculate the sum of two numbers. 

     * @param firstNumber An NSInteger to be used in the summation of two numbers

     * @param secondNumber The second half of the equation.

     * @return The sum of the two numbers passed in. 

*/

+ (NSInteger)addNumber:(NSInteger)firstNumber toNumber:(NSInteger)secondNumber;

编译,通过 alt+左键,你会看到:

问题: 在 Xcode 文本编辑窗体。非常多地方都支持 alt+左键。

请确保你点击在正确的地方。在上面的样例里,你应当在addNumber: 和 toNumber: 两处使用 alt+左键。

你或许不知道,这种方法的实现真的非常恶心。它只能使用非负数作为參数。为了让用户明确这一点,你应当在凝视中加入很多其它的说明。

因此,我们能够在 @return 前面加入一个 @warning 标签。

* @warning Please make note that this method is only good for adding non-negative numbers.

编译项目,然后使用 alt+剩下。

我们增加 @warning 标签的效果,如以下:

Xcode HeaderDoc 过程(1)的更多相关文章

  1. 使用Xcode HeaderDoc和Doxygen文档化你的Objective-C和Swift代码

    在一个应用的整个开发过程中涉及到了无数的步骤.其中一些是应用的说明,图片的创作,应用的实现,和实现过后的测试阶段.写代码可能组成了这个过程的绝大部分,因为正是它给了应用生命,但是这样还不够,与它同等重 ...

  2. Xcode HeaderDoc 教程(2)

    Code Snippets,让一切变得更简单: 这真的非常easy,不是吗?但还能更简单一些吗? 本站以前介绍过 code snippets.请看这里. Code snippets 在 Xcode 中 ...

  3. Xcode HeaderDoc 教程(3)

    打开 MathAPI.h,将第一个 @param 标签的參数名由firstNumber 改动为 thirdNumber,然后编译. 有一个警告发生.甚至提出了改动建议.它不会影响不论什么事情,但有助于 ...

  4. React Native 导入原生Xcode项目总结与记录

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  5. Xcode command line tools

    1.Xcode command line tools 安装 如果你不是一名 iOS 或 OS X 开发者,可以跳过安装 XCode 的过程,直接安装 Xcode command line tools. ...

  6. iOS开发之Xcode常见错误

    一."file/file.h" file not found 如果遇到这种类型的问题报错,可以分为三部来解决,由简到复杂一步一步来,直到解决问题位置.1. 点击Xcode -> ...

  7. iOS开发总结-Xcode常见错误

    iOS开发总结-Xcode常见错误 "file/file.h"filenotfound 如果遇到这种类型的问题报错,可以分为三部来解决,由简到复杂一步一步来,直到解决问题位置. 1 ...

  8. 功能强大的Xcode辅助工具Faux Pas:帮你找到各种隐形的bug

    本文转载至 http://www.cocoachina.com/industry/20140804/9307.html Faux Pas(Beta版下载地址)是一个Xcode辅助工具,用以检查Xcod ...

  9. 解决XCODE配置LLVM环境出现的问题

    问题描写叙述:在LLVM整合进XCODE的过程中出现符号没有定义导致出现未决函数或方法.但使用终端编译链接生成程序没有问题. 问题产生原因:未引用响应的LLVM库与系统库,以及编译器设置.连接器设置不 ...

随机推荐

  1. C# Windows Phone 8 WP8,切换各国语系免重开机 加速开发 送审有效率!!

    原文:C# Windows Phone 8 WP8,切换各国语系免重开机 加速开发 送审有效率!! 一般我们在开发Windows Phone 8 时,会考虑到各国语言的问题,但是你有想过吗?用实体手机 ...

  2. Android:自己定义PopupMenu的样式(显示图标/设置RadioButton图标)

    PopupMenu是Android中一个十分轻量级的组件.与PopupWindow相比,PopupMenu的可自己定义的能力较小,但使用更加方便. 先上效果图: 本例要实现的功能例如以下: 1.强制显 ...

  3. Codeforces Round #264 (Div. 2) C Gargari and Bishops 【暴力】

    称号: 意甲冠军:给定一个矩阵,每格我们有一个数,然后把两个大象,我希望能够吃的对角线上的所有数字.我问两个最大的大象可以吃值. 分析:这种想法是暴力的主题,计算出每一格放象的话能得到多少钱,然后求出 ...

  4. ORACLE触发特定的解释

    ORACLE PL/SQL编程八: 把触发器说透 本篇主要内容例如以下: 8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 ...

  5. CMake入门(二)

    CMake入门(二) 最后更新日期:2014-04-25 by kagula 阅读前提:<CMake入门(一)>.Linux的基本操作 环境: Windows 8.1 64bit英文版.V ...

  6. [LeetCode119]Pascal's Triangle II

    题目: Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3,Return [ ...

  7. 【新秀疯狂UML系列】——面向对象的技术

    从软质工作开始,我们来到与面向对象的接触,接下来的学习材料似乎已经提到了面向对象,在与她的朋友去一个.所以,我们必须知道她多一点点. 一.何为面向对象? 面向对象(Object Oriented).是 ...

  8. SQL Server数据库附加失败:错误5120和错误950

    再次敲机房,想參考曾经的物理模型,结果在附加数据库这一环节出现了点问题,以下总结一下. 1.附加数据库失败,错误5120 对于这样的错误,我在网上搜集了一下,主要有下面几种解决的方法: 方法一:将要附 ...

  9. [Unity3d]定义自己的鼠标

    [Unity3d]自己定义鼠标 我们在用unity3d开发自己的游戏的时候.自己定义游戏中的鼠标也是常常要用到的.那我就得学学.事实上原理非常easy,先将鼠标给隐藏,然后在鼠标的位置上画出一个自己定 ...

  10. std::list.pop_back() 弹空了列表导致的崩溃

    core文件输出: (gdb) bt # # ) at xxxxx/sql/signal_handler.cc: # <signal handler called> # # # # # 0 ...