Objective-C自动生成文档工具:appledoc
由于最近琐事比较多,所以好久没有写文章了。今天我们聊一聊Objective-C自动生成文档。
做项目的人多了,就需要文档了。手工写文档是一件苦差事,但是我们也有从源码中抽取注释生成文档的专用工具。
经过查找,比较大众的有三个:
doxygen:适于生成html文档与pdf文档。 支持的语言多,可以配置的地方也比较多。默认生成的风格与苹果的风格不一致。
headdoc :是 Xcode 自带的文档生成工具。在安装完 Xcode 后,就可以用命令行来生成对应的文档。不过它只生成以
/*! */
的格式的注释。不兼容/** */
格式的注释appledoc: Github地址 ,适于生成html文档和xcode帮助文档(docset)。可以兼容
/** */
格式,也可以兼容/*! */
格式的注释。
我感觉appledoc是最好的,所以在这里,我只介绍一下appledoc的使用,有兴趣的童鞋也可以研究下其他两种。
appledoc的安装
第一种:打开终端,输入以下命令:
git clone git://github.com/tomaz/appledoc.git
cd appledoc
sudo sh install-appledoc.sh
第二种:如果你装了homebrew,打开终端,输入以下命令:
brew install appledoc
appledoc的使用
为了演示appledoc的使用,我在桌面新建了一个工程Test,然后在ViewController类里面加了一些注释:


然后演示appledoc的使用:
1.在终端中使用
使用 appledoc 时,打开终端,进入项目所在目录,使用如下命令即可:
appledoc --output 输出路径 --project-name 工程名 --project-company 公司名 --company-id 公司ID .
例如我在这里使用的命令是:
appledoc --output ./doc --project-name Test --project-company lisong --company-id lisong .
具体过程如下:

appledoc 会扫描当前路径下的所有文件,然后生成好文档放到 doc 目录下。

编译出的Docset
默认会放在~/Library/Developer/Shared/Documentation/DocSets
路径下,里面包含html的文档。首先显示生成的Docset的包内容,然后在Contents/Resources/Documents路径下,双击打开里面的index.html可以在浏览器中查看文档了。
并且生成的Docset已经安装到Xcode中。重启Xcode后,在Help—Documentation and API Reference
菜单下也可以看到生成的文档:

如果不想生成Docset,而是想生成html,就需要加一个--no-create-docset
,这里我使用命令:
appledoc --no-create-docset --output ./doc --project-name Test --project-company lisong --company-id lisong .
则会在doc目录下生成一个html文件夹,也是双击里面的index.html就可以在浏览器中查看文档了。

你也可以在终端用appledoc --help
查看所有可用的参数。详细的信息可以查看官方的文档:http://gentlebytes.com/appledoc/
2.在Xcode里使用
1.首先创建一个Aggregate类型的Target,取名Document

2.选择Build Phases,点击左边的小加号,选择New Run Script Phase,建好了以后打开刚刚建立的Run Script,在框里输入命令,命令与终端一样,这里我们输入:
appledoc --no-create-docset --output ./doc --project-name Test --project-company lisong --company-id lisong .

3..然后点左上角选择Document,编译一下,成功后文档就生成在doc目录下了。

注释样式
因为appledoc是通过注释生成文档的,下面说说注释的样式,几种常见的有:
/// Single line comment./// Single line comment spreading
/// over multiple lines./** Single line comment. *//*! Single line comment *//** * Single line comment spreading* over multiple lines.*//** Single line comment spreadingover multiple lines. No star*/
在Xcode里面,我们可以用command + option + /
方便快捷地生成注释,很方便。大家可以多尝试尝试各种注释。更多的注释格式可以看这里
欢迎关注 我 和我的专题:iOS技术交流,查看更多好文章。
相关文章:

void main()是错的!
很多人甚至市面上的一些书籍,都使用了void main( ),其实这是错误的。C/C中从来没有定义过void main( )。C之父Bjarne Stroustrup在他的主页上的FAQ中明确地写着The definition void main( ) { /* ... */ } is not and never has been C, nor has it even…

Some tips
VScode自动换行 Code -> Perference -> Setting [ “editor.wordWrap”: “on” ]

iOS 自定义转场动画初探
最近项目刚迭代,正好闲下来捣鼓了一下iOS的自定义转场的效果。闲话不多说,直接开始上代码吧。(ps:请忽略实际的转场效果,关注技术本身呢哦。pps:主要是转场的动画做的比较low啦!) 1、首先定义一个转场动画的…

Delphi实现WebService带身份认证的数据传输
WebService使得不同开发工具开发出来的程序可以在网络连通的环境下相互通信,它最大的特点就是标准化(基于XML的一系列标准)带来的跨平台、跨开发工具的通用性,基于HTTP带来的畅通无阻的能力(跨越防火墙)。WebService给我们的软件开发带来了诸多好处,但是有一点还是必须要考虑到…

【Linux学习笔记】 - 什么是Linux?
Linux Linux内核 GNU工具 组成部分 Linux内核GUN工具图形化桌面环境应用软件 Linux内核 地位:Linux核心,控制计算机系统上的所有硬件和软件。必要时,分配硬件,并根据需要执行软件 主要功能: a. 系统内存存储 ——…

【转】 Android快速开发系列 10个常用工具类 -- 不错
原文网址:http://blog.csdn.net/lmj623565791/article/details/38965311 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38965311,本文出自【张鸿洋的博客】 打开大家手上的项目,基本都会有一大批的辅助类&a…

CollectionView侧滑刷新
作者 SoDoIt 关注 2017.03.05 16:39 字数 33 阅读 31评论 0喜欢 2ABSideRefresh.gif效仿MJRefresh写的侧滑刷新,原理不讲了,需要的直接看代码 GitHub:https://github.com/wangjingyu0018/ABRefresh.git

函数功能MATLAB
近期一直在查找函数功能之类的题问,现在正好有机会和大家享共一下. 百科名片 录目 简介开展程历要主功能新特性版本分析特色优势开展简介开展程历要主功能新特性版本分析特色优势开展编辑本段 简介 matlab开辟任务面界 编辑本段 开展程历 编辑本段 要主功能 1.数值析分 2.数值和…

[HTTP协议]基础篇-待完结
文章目录输入网址后回车输入网址后回车 简单的浏览器HTTP请求过程: 浏览器从地址栏输入中获取服务器IP地址和端口号浏览器用TCP的三次握手与服务器建立连接浏览器向服务器发送拼好的报文服务器收到报文后处理请求,同样拼好报文再发给浏览器浏览器解析报…

IAR之工程配置
参考 : IAR的Workspace顶部下拉菜单中Debug和Release http://blog.csdn.net/yanpingsz/article/details/5588525 最近买了zigbee模块的开发板回来研究, 其中一个实验程序里面有三个版本, 分别是路由/终端/协调器, 忙活了半天不知道同一个project是如何配置成3个不同的版本的. …

CoreText入坑一
CoreText是Mac OS和iOS系统中处理文本的low-level API, 不管是使用OC还是swift, 实际我们使用CoreText都还是间接或直接使用C语言在写代码。CoreText是iOS和Mac OS中文本处理的根基, TextKit和WebKit都是构建于其上。 一. 基础 1.在使用CoreText编写代码之前, 需要先了解一些基…

mysql连接hang住问题分析
【问题现象】: 1. Linuxc多线程连接mysql数据库,每次都是短连接,操作完后就释放连接,有时候会出现mysql_real_connect挂住的现象 2. 挂住超时mysql_real_connect返回后报错如下:Lostconnection to MySQL s…

【Linux学习笔记】 -- 基本Shell命令
常见的目录名均基于文件系统层级标准(filesystem hierarchy standard,FHS) Linux的四个部分: 1 Linux内核:控制所有硬软件,必要时分配硬件根据需要执行软件 系统内存管理:可用物理内存 创建、管理虚拟内存[交换空间…

【OpenCV】图像代数运算:平均值去噪,减去背景
代数运算,就是对两幅图像的点之间进行加、减、乘、除的运算。四种运算相应的公式为: 代数运算中比较常用的是图像相加和相减。图像相加常用来求平均值去除addtive噪声或者实现二次曝光(double-exposure)。图像相减用于减去背景或周…

简明 Vim 练级攻略(转)
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最…
iOS 的离屏渲染
原文链接:http://www.imlifengfeng.com/blog/?p593OpenGL ES 是一套多功能开放标准的用于嵌入系统的 C-based 的图形库,用于 2D 和 3D 数据的可视化。OpenGL 被设计用来转换一组图形调用功能到底层图形硬件(GPU),由 G…

MySQL 常见操作指令
什么是SQL? SQL(Structured Query Language)用于访问和操作数据库的结构化查询语言。 数据库包含一个或多个表,每个表均有名称标识,包含数据的记录(行)。 典型的SQL语句 1. SELEC语句 SELE…
iOS 实现点击微信头像效果
来源:伯乐在线 - 小良 如有好文章投稿,请点击 → 这里了解详情 如需转载,发送「转载」二字查看说明 公司产品需要实现点击个人主页头像可以放大头像、缩放头像、保存头像效果(和点击微信个人头像类似),故找…

HDU 4292 Food(dinic +拆点)
题目链接 我做的伤心了,不知是模版效率低,还是错了,交上就是TLE,找了份别人的代码,改了好几下终于过了。。 1 #include <cstdio>2 #include <cstring>3 #include <queue>4 #include <map>5 #i…

jQuery中用ajax访问php接口文件
js代码 function ajax_request(){var result;var articleId new Object();articleIdgetArticleId();$.ajax({url: "/topicPage/getComment.php",//请求php文件的路径data:{id:articleId},//请求中要传送的参数,会自动拼接成一个路径,在php中用get方式获取…

Python 数据库操作 psycopg2
文章目录安装基本使用安装 psycopg 是 Python 语言中 PostpreSQL数据库接口 安装环境: Python:v2.7, v3.4~3.8PostGreSQL:7.4~12 pip install psycopg2基本使用 import psycopg2def connect_db(host: str,port: int,database: str,user:…

Android logcat命令详解
一、logcat命令介绍 1.android log系统 2.logcat介绍 logcat是android中的一个命令行工具,可以用于得到程序的log信息 log类是一个日志类,可以在代码中使用logcat打印出消息 常见的日志纪录方法包括:方法 描述 v(String,String) (vervbose)显…

[iOS]如何重新架构 JPVideoPlayer ?
注意:此文为配合 JPVideoPlayer version 2.0 版本发布而写,如果你想了解 2.0 版本的更新内容和所有实现细节,请点击前往 GitHub。 导言:我几个月前写了一个在 UITableView 中滑动 UITableViewCell 播放视频的框架,类似…

函数项目一个超感人的故事:关于swfupload在某些环境下面session丢失的完美解决方案(看完我哭了)...
查了好多资料,发现还是不全,干脆自己整理吧,至少保证在我的做法正确的,以免误导读者,也是给自己做个记录吧! 标题吸引到你了吗? 先说一下这个题问成形的原因。大家都晓得 session是靠cookie中的…

【学习笔记】git 使用文档
安装 git # mac 环境 brew install git检查是否安装成功 ➜ ~ git --version git version 2.20.1 (Apple Git-117)卸载 git ➜ ~ which -a git /usr/bin/git ➜ ~ cd /usr/bin ➜ bin sudo rm -rf git*git init 命令 对一个空文件,git 初始化。文件名称增加…

UIBezierPath和CAShapeLayer创建不规则View(Swift 3.0)
最近一个朋友在做图片处理的 App,想要实现类似 MOLDIV App 拼图的UI效果(如何创建不规则的 view),就问我有什么想法。我首先想到的就是 UIBezierPathCAShapeLayer的方式,为了验证自己的想法,写了一个小 dem…

http响应状态
Servlet API: javax.servlet.http.HttpServletResponse 用于创建HTTP响应,包括HTTP协议的状态行、响应头以及消息体 HTTP状态码: 100-199:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。 200…

antlr.collections.AST.getLine()I问题的起因及解决
在我们的java web 项目中引入hibernate和struts,当我们使用HQL语句进行查询时会报 antlr.collections.AST.getLine()I的错误,导致程序无法继续运行,这并不是我们的程序写的有错误,出现这个异常的原因是因为我们使用的hibernate和s…

2018湖湘杯海选复赛Writeup
2018湖湘杯Writeup0x01 签到题0x02 MISC Flow0x03 WEB Code Check0x04 WEB Readflag0x05 WEB XmeO0x06 Reverse Replace0x07 MISC Disk0x08 Crypto Common Crypto0x09 Reverse HighwayHash640x10 Web Mynot0x01 签到题 关注合天智汇公众号,回复hxb2018得到flag。0x…

Operation Queues并发编程
并发、异步在我们的编程中,见到的太多了。在iOS中,实现并发的主要三个途径Operation Queues、Dispatch Queues、Dispatch Sources,今天我们就来详细介绍Operatin Queues的使用,花了两天时间写这一篇,值得一看。 为什么…