doxygen中如何生成 docwatermark mark

PHP生成图片水印和文字水印
来源:&&&时间: 21:54:15&&&阅读数:
[导读] 之前很多读者发邮件问我如何使用PHP生成水印,今天我就来给大家讲解一下。本篇PHP教程使用了两个函数来生成水印:watermark_text()和watermark_image()。你可以将本篇教程的示例整合到你的WEB项目中,比如上传图
之前很多读者发邮件问我如何使用PHP生成水印,今天我就来给大家讲解一下。本篇PHP教程使用了两个函数来生成水印:watermark_text()和watermark_image()。你可以将本篇教程的示例整合到你的WEB项目中,比如上传图片的版权水印。文本水印我们使用函数watermark_text()来生成文本水印,你必须先指定字体源文件、字体大小和字体文本,具体代码如下:$font_path&=&&GILSANUB.TTF&;&&$font_size&=&30;&&$water_mark_text_2&=&&phpfuns&;&&function&watermark_text($oldimage_name,&$new_image_name) &{ &global&$font_path,&$font_size,&$water_mark_text_2; &list($owidth,$oheight)&=&getimagesize($oldimage_name); &$width&=&$height&=&300; &$image&=&imagecreatetruecolor($width,&$height); &$image_src&=&imagecreatefromjpeg($oldimage_name); &imagecopyresampled($image,&$image_src,&0,&0,&0,&0,&$width,&$height,&$owidth,&$oheight); &$blue&=&imagecolorallocate($image,&79,&166,&185); &imagettftext($image,&$font_size,&0,&68,&190,&$blue,&$font_path,&$water_mark_text_2); &imagejpeg($image,&$new_image_name,&100); &imagedestroy($image); &unlink($oldimage_name); &return& &} &可以在这里
除非特别声明,PHP100新闻均为原创或投稿报道,转载请注明作者及原文链接原文地址:
延伸阅读 More
haowubai&&
haowubai&&
haowubai&&
haowubai&&
haowubai&&
视频教程 Video
网站服务:
专题合作 : liuyh@
会员问题 : QQ
友情链接 : QQ
网站投稿 :
@php100官方
php100官方微信
Copyright (C) 2007-, All Rights Reserved 版权所有 上海创恩信息技术有限公司. 沪ICP备号Objective-C规范注释心得——同时兼容appledoc(docset、html)与doxygen(html、pdf)的文档生成 - 好代码编程网
Objective-C规范注释心得——同时兼容appledoc(docset、html)与doxygen(html、pdf)的文档生成
  手工写文档是一件苦差事,幸好现在有从源码中抽取注释生成文档的专用工具。对于Objective-C来说,目前最好用的工具是ledoc和doxygen。可是这两种工具对于注释的要求略有区别。于是我经过一番摸索,找到了一套能同时兼容这两种工具的注释写法。
  工具简介&&appledoc:简单方便,适于生成apple风格的文档,及直接集成到xcode帮助(docset)。官网
。doxygen:功能强大,适于生成html文档与文档。官网
  环境&&Mac
X Lion 10.7.5Xcode 4.6.2appledoc 2.1doxygen 1.8.4MacTeX-2012
一、注释写法
  提示:这一章主要是参考性内容,比较枯燥。请根据需要来阅读&&对于想简单学一下注释写法的,读前4节就行了;对于想全面学习appledoc与doxygen均兼容的注释写法的,读前6节就行了;对于既想使用appledoc,又想使用doxygen增强效果的,请阅读所有的节。
1.1 注释形式
  标准C/C++的注释形式有&//&形式的单行注释 与&/* */&形式的多行注释这两种。  而appledoc与doxygen的文档化注释是它们的变种,有多种形式。例如appledoc与doxygen均兼容的注释形式有以下7种&&
/// Single line comment.
/// Single line comment spreading
/// over multiple lines.
/** Single line comment. */
/** Single line comment spreading
* over multiple lines.
/** Single line comment spreading
over multiple lines. No star.
/*! Single line comment. */
/*! Single line comment spreading
over multiple lines.
  虽然appledoc与doxygen都支持。但在平时编写代码时,为了避免风格杂乱的视觉污染,应该固定使用注释形式。
1.1.1 单行注释
  在很多时候只需写一个简要描述就够了,这时最好使用单行注释。推荐格式为&&
/// 简要描述.
  appledoc与doxygen均会将单行的&///&注释识别为简要描述。兼容性非常高。
  备注&&1) 文本最好统一以英文句号(.)结尾。这样做有助于代码阅读,明确地得知该段文本已经结束,而且有助于避免乱码时的换行符丢失问题。2) 不要连续多行使用&///&。doxygen在默认情况下,会将多行的&///&当作详细描述,而没有简要注释. 虽然可以修改doxygen的配置以解决上述问题,但多行&///&本身是违背&简要描述&这个初衷的.
1.1.2 多行注释
  当需要写详细描述时,这时就需要使用多行注释了。推荐格式为&&
/** 简要描述.
* 详细描述或其他.
  对于appledoc与使用了JAVADOC_AUTOBRF参数的doxygen来说,它们均会将注释中的第一段识别为简要描述,然后将后面的段识别为详细描述.
  其实doxygen的标准多行注释为&&
* @brief 简要描述.
* 详细描述或其他.
  可惜appledoc对@brief指令的支持存在缺陷&&@brief不能出现类、协议的注释中,会导致后续内容丢失。 @brief多行注释仅能安全的用在属性、方法的注释中。
  备注&&1) 多行注释存在&段&的概念,以内容为空的行作为分段依据。如果没有空行隔开的话,会将连续有内容的行连接起来组成一段.2) 如果省略中间各行行首的星号(*),appledoc与doxygen也能识别。当考虑到注释缩进、美观性、兼容性,还是建议不要省略行首星号。
1.1.3 行尾注释(仅doxygen)
  在对枚举、结构体等类型的成员进行注释时,为了使内容更加紧凑,我们一般喜欢在行尾写注释。  可惜目前仅有doxygen支持行尾注释,而appledoc不支持。
  doxygen支持以下4种行尾注释&&
/**& 行尾注释1. appledoc不支持会变为下一项的注释, doxygen 支持, 根据英文句号自动切分简要描述与详细描述. */
/*!& 行尾注释2. appledoc不支持会变为下一项的注释, doxygen 支持, 会全部当作详细描述, 而缺少简要描述. */
///& 行尾注释3. appledoc不支持会变为下一项的注释, doxygen 支持.
//!& 行尾注释4. appledoc不支持会会忽略, doxygen 支持.
  为了避免appledoc误将行尾注释当作下一项的注释,故推荐第4种注释&&既以&//!&&开头的注释。
1.2 类(协议、分类)的注释
  对于类(协议、分类)来说,一般只需要写简要描述就行了,这时可以使用单行注释&&
/// 文档A.
@interface DocA : NSObject
  当需要留下详细描述时,可换成多行注释&&
/** 文档B.
* 文档B的详细描述.
@interface DocB : NSObject
1.3 属性的注释
  对于属性来说,本来使用行尾注释是最好的,能使内容更加紧凑。可惜目前appledoc不支持行尾注释。只好退而求其次,选择单行注释了&&
/// 数值属性.
@property (nonatomic,assign) NSI
  当需要留下详细描述时,可换成多行注释&&
* @brief 字符串属性.
* 属性的详细描述.
@property (nonatomic,strong) NSString*
1.4 方法的注释
  对于没有参数、返回值的简单方法,可以使用单行注释&&
/// 简单方法.
- (void)someM
  若方法具有参数或返回值,这时就得使用多行注释了&&
* @brief 带整数参数的方法.
* @return 返回value.
- (int)someMethodByInt:(int)
  指令说明&&@param &name& &description&: 参数描述.@return &description&: 返回值描述.
  由于方法注释需要填写的内容较多(参数列表与返回值等),所以现在有很多插件可以帮忙生成方法的注释,而这些插件一般是使用@brief多行注释的。例如参考文献中的《》.
  在某些时候,我们还需要在方法注释种填写异常、参见、警告 等信息&&
* @brief 带字符串参数的方法.
* @return 返回value.
* @exception NSException 可能抛出的异常.
* @see someMethod
* @see someMethodByInt:
* @warning 警告: appledoc中显示为蓝色背景, Doxygen中显示为红色竖条.
* @bug 缺陷: appledoc中显示为黄色背景, Doxygen中显示为绿色竖条.
- (NSString*)someMethodByStr:(NSString*)
  指令说明&&@exception &name& &description&: 异常描述.@see &name&: 参见. 具体用法详见 1.5.2 @see、@sa(参见) .@warning &text&: 警告.@bug &text&: 警告.
1.5 appledoc、doxygen均支持的指令
  指令一般以&@&开头,也可以使用&\&等符号开头。 若想在文本中使用&@&、&\&等符号,可使用&\&转义符,例如&\@&、&\\&等。
1.5.1 指令列表
  指令在appledoc中被称作&Directive&,而在doxygen中被称作&mand&。  appledoc没有专门指令参考文档,仅在《》中给了几个简单示例。  而doxygen有详细的指令参考文档,详见《》。
  经过测试,我发现下列指令在appledoc与doxygen中均是有效的&&@brief &title&: 简要注释. appledoc中仅对属性、方法有效,对类、协议 无效,会造成后续内容解析失败.@param &name& &description&: 参数描述.@return &description&: 返回值描述.@exception &name& &description&: 异常描述.@see &name&: 参见.@sa &name&: 参见. 同@see.@warning &text&: 警告.@bug &text&: 警告.@name &title&: 组名. 用于给成员们分组, 既文档中Tasks区的子类别.
1.5.2 @see、@sa(参见)
  参见指令的格式为&&@see &name&@sa &name&
  在保证appledoc与doxygen均兼容的情况下,&name&可为&&1) 当前类(或协议)中的属性或方法。(注意Objective-C方法签名的写法,一般为&方法名:参数1:参数2:??&的格式)2) 类(或协议)名。(注意appledoc不支持当前类)
  虽然appledoc与doxygen都支持参见&其他类或协议中的成员&,可惜它们的写法不同,而且相互不兼容&&appledoc:使用Objective-C消息语法,既&[类 成员]&格式。doxygen:使用传统的对象成员访问语法,既&类.成员&格式。
  注意本指令与@brief指令存在同样的问题&&appledoc中仅对属性、方法有效,对类、协议 无效,会造成后续内容解析失败。 这时有两种处理策略&&1) 将参见指令放在注释的最后面,避免内容丢失,且能保证在doxygen中的效果.2) 使用来代替参见。详见 1.6.4 链接。
1.6 appledoc、doxygen均支持的排版格式
  无格式的纯文本看起来比较费劲,得进行格式排版,以提高文档的组织性与表现力。appledoc与doxygen均有自己的一套约定&&appledoc可参考《》。doxygen可参考《》。
  本节将会介绍appledoc与doxygen均支持的排版格式。
1.6.1 代码文本
  有时需要在一段话中引入一小段代码,这时可以用重音符(`)将那一段代码给包起来。例如&&
* 引用短代码, 如 `someMethodByStr:` .
1.6.2 代码块
  代码块适用于需要在注释中放置多行代码的情况。具体办法是在每行内容的前面加一个tab字符,例如&&
* 示例代码:
int sum=0;
for(int i=1; i&=10; ++i) {
  因为空格与Tab字符均显示为空白,不易区分。于是用&space&、&tab&表达空格与tab字符,上述注释实际为&&
&space&*&space&示例代码:
&space&*&space&&tab&int sum=0;
&space&*&space&&tab&for(int i=1; i&=10; ++i) {
&space&*&space&&tab&&tab&sum +=
&space&*&space&&tab&}
  因每行注释开始的星号(*)与内容之间必须用空白型字符隔开,所以平时用空格或tab字符都行。但在使用代码块时,为了避免对Tab字符的误判,内容最好严格以&&space&&tab&&开头(既每行以&&space&*&space&&tab&&开头)。
  备注&&1) 注意段的概念,代码块与前后文本之间应该空开一行。2) appledoc与doxygen还支持将4个空格当作一个tab字符。但4个字符的录入、维护起来会更费力一些,不推荐使用。
1.6.2.1 xcode中输入代码块
  在xcode中,按下Tab键时,会自动整合前面的空格字符,导致代码块排版失效。所以建议先在多行注释中粘贴代码,然后在行前输入&*&space&&tab&&。范例如下&&
  首先,最初的注释是这样的&&
* 详细描述或其他.
  第一步,在多行注释中粘贴代码,注意xcode会自动对新粘贴内容进行排版,在每一行的前面加一个空格&&
* 详细描述或其他.
int sum=0;
for(int i=1; i&=10; ++i) {
  第二步,补齐行首。复制&*&space&&tab&&,对于先前所粘贴的那段代码,在每一行的第二个字符处粘贴,以形成&&space&*&space&&tab&&开头的代码块格式&&
* 详细描述或其他.
int sum=0;
for(int i=1; i&=10; ++i) {
  第三步,修尾。增加空行,增加&代码:&行,提示下面是代码&&
* 详细描述或其他.
int sum=0;
for(int i=1; i&=10; ++i) {
1.6.3 列表
1.6.3.1 无序列表
  在内容的每一行开头使用&-&、&+&或&*&字符,可创建无序列表。例如&&
* 无序列表:
1.6.3.2 有序列表
  使用数字与小数点,可创建有序列表。例如&&
* 有序列表:
* 1. first.
* 2. second.
* 3. third.
1.6.3.3 多级列表
  使用tab字符配合使用无序列表或多级列表,可创建多级列表。例如&&
* 多级列表:
2. second.
1.6.4 链接
  链接有三种形式&&1) 直接链接。格式为 &link&。会将链接地址直接作为文本来显示。2) 文本链接。格式为 [text](&link&)。使用自定义的文本作为链接名。3) 交叉引用链接。比较复杂,且难以兼容appledoc与doxygen,故本文不讨论。
1.6.4.1 Url
  在注释中直接写上url便会自动创建链接,例如&&
* / : 直接写url链接.
  还可以使用文本链接形式&&
* [Doxygen](http://www.stack.nl/~dimitri/doxygen/) : 为链接提供文本 .
1.6.4.2 类与协议
  在注释中直接写上类(或协议)名,并注意左右两侧留空格,appledoc与doxygen便会自动生成指向该类(或协议)的链接。例如&&
* DocA : 类.
  但对于文本链接来说,appledoc与doxygen的写法不同&&
* - [文档B](DocB) : 类的链接文本.(仅appledoc)
* - [文档B](@ref DocB) : 为\@ref链接提供文本 (仅doxygen. appledoc会把\@ref当作文本而生成错误的链接).
  建议还是使用直接链接吧。
1.6.4.3 属性与方法(仅appledoc)
  如果注释中出现了 [类 成员],appledoc会自动的为其创建链接,但doxygen不支持此功能。
  如果注释中出现当前类的属性或方法名,appledoc会自动的为其创建链接,但doxygen不支持此功能。而且appledoc还存在Bug&&如果在同一片注释中出现了[类 成员],那么当前类的的属性或方法的链接会失效。
  这么不稳定的功能还是暂时别用吧。
1.7 常用的doxygen注释示例
  doxygen的注释功能多的令人眼花缭乱,这里还是介绍几种常用写法吧。
1.7.1 文件头
  一般格式为&&
MyDocViewController.h
[zyl910](/zyl910/)
* @version
* # update (更新日志)
* [] &zyl910& v1.0
* + v1.0版发布.
  指令说明&&@file [&name&]:文件名.@author &list of authors&:作者. 这里我使用了链接,详见 1.6.4 链接 .@version &version number&:版本号.@date &date description&:日期.
  以井号(#)开头的行表示是。如果有1个井号(#),表示是一级标题。如果有2个井号(##),表示是二级标题,以此类推。
1.7.2 枚举、结构体、联合体与typedef
  对于枚举、结构体、联合体等类型,一般可选用单行注释或多行注释。对于其中的成员,推荐使用行尾注释。例如&&
/// Objective-C 文档工具枚举 (枚举, 仅Doxygen).
typedef enum _ObjCDocToolEnum{
ObjCDocToolEnumAppleDoc = 1,
//!& AppleDoc. / .
ObjCDocToolEnumDoxygen,
//!& Doxygen. http://www.stack.nl/~dimitri/doxygen/ .
}ObjCDocToolE
/** 整数矩形 (结构体, 仅Doxygen).
* 结构体的详细描述.
typedef struct _RectInt {
//!& 横坐标.
//!& 纵坐标.
//!& 宽度.
//!& 高度.
}RectInt, *PRectI
//!& 整数矩形的指针.
typedef const RectInt* PCRectI
//!& 整数矩形的常量指针.
/// 浮点数的字节(联合体, 仅Doxygen).
typedef union _FloatByte {
//!& 单精度浮点数.
unsigned char bytes[4];
//!& 4个字节.
&  注意行尾注释是对前一项的注释,所以一定要使用分号(;)或逗号(,)标明本项成员定义好后,再写行尾注释。包括最后一个成员。
  在定义结构体时,一般还需要定义其相关的指针类型与常量指针类型&&定义指针类型时,可以跟结构体的定义写在一起,利用行尾注释的特点来注释。定义常量指针类型时,需要单独写一行typedef,并使用行尾注释。
  对于常量形式的简单宏,推荐使用行尾注释。例如&&
#define BUFSIZE
//!& 缓冲区大小 (简单宏, 仅Doxygen).
  对于带参数的宏,可参考&方法的注释&写多行注释。例如&&
最小值 (参数宏, 仅Doxygen).
返回两者中的最小值.
#define min(a,b)
( ((a)&(b)) ? (a) : (b) )
1.7.4 函数指针与块函数(Block Objects)
  对于函数指针与块函数,也可参考&方法的注释&写多行注释。例如&&
动作回调函数.
自定义数据.
typedef void (*ActionCallback)(void* sender, void* userdata);
动作块函数.
自定义数据.
typedef void (^ActionHandler)(id sender, id userdata);
1.7.5 成员变量
  对于成员变量,推荐使用行尾注释。例如&&
@interface MyDocViewController : UIViewController {
int _privateI
//!& 私有成员变量 (仅Doxygen具有EXTRACT_PRIVATE标识时, 会被归类为&Private 属性&).
@protected
int _protectedI
//!& protected成员变量 (仅Doxygen, 会被归类为&Protected 属性&).
id&MyDocDelegate& _
//!& 委托变量.
int _packageI
//!& 包内成员变量 (仅Doxygen, 会被归类为&Protected 属性&).
int _publicI
//!& 公开成员变量 (仅Doxygen, 会被归类为&Public 属性&).
二、编码演练
  前面说了很多理论知识,现在创建一个来演练一下吧。
  打开Xcode,新建一个名为&MyDoc&的&Single View Application&的项目。
  然后打开MyDocViewController.h,在里面练习注释。  全部代码&&
MyDocViewController.h
[zyl910](/zyl910/)
* @version
* # update (更新日志)
* [] &zyl910& v1.0
* + v1.0版发布.
#import &UIKit/UIKit.h&
#define BUFSIZE
//!& 缓冲区大小 (简单宏, 仅Doxygen).
最小值 (参数宏, 仅Doxygen).
返回两者中的最小值.
#define min(a,b)
( ((a)&(b)) ? (a) : (b) )
/// Objective-C 文档工具枚举 (枚举, 仅Doxygen).
typedef enum _ObjCDocToolEnum{
ObjCDocToolEnumAppleDoc = 1,
//!& AppleDoc. / .
ObjCDocToolEnumDoxygen,
//!& Doxygen. http://www.stack.nl/~dimitri/doxygen/ .
}ObjCDocToolE
/** 整数矩形 (结构体, 仅Doxygen).
* 结构体的详细描述.
typedef struct _RectInt {
//!& 横坐标.
//!& 纵坐标.
//!& 宽度.
//!& 高度.
}RectInt, *PRectI
//!& 整数矩形的指针.
typedef const RectInt* PCRectI
//!& 整数矩形的常量指针.
/// 浮点数的字节(联合体, 仅Doxygen).
typedef union _FloatByte {
//!& 单精度浮点数.
unsigned char bytes[4];
//!& 4个字节.
动作回调函数.
自定义数据.
typedef void (*ActionCallback)(void* sender, void* userdata);
动作块函数.
自定义数据.
typedef void (^ActionHandler)(id sender, id userdata);
/// 文档A.
@interface DocA : NSObject
/** 文档B.
* 文档B的详细描述.
@interface DocB : NSObject
/// Objective-C 文档委托.
@protocol MyDocDelegate &NSObject&
/** 主页面.
* 主页面的详细描述.
* 引用短代码, 如 `someMethodByStr:` .
* 示例代码:
int sum=0;
for(int i=1; i&=10; ++i) {
* 无序列表:
* 有序列表:
* 1. first.
* 2. second.
* 3. third.
* 多级列表:
2. second.
* 以下是仅doxygen可见内容. 因为appledoc不支持类型注释中的\@see标签(但支持在属性、方法中使用),会导致后续内容丢弃.
* @see str
* @see someMethodByStr:
* @see MyDocAppDelegate
* @see [MyDocAppDelegate window]
// 仅 appledoc. doxygen仅能识别出左边的类名.
* @see [MyDocAppDelegate someMethodByFloat:]
// 仅 appledoc. doxygen仅能识别出左边的类名.
* @see MyDocAppDelegate.window
// 仅 doxygen. appledoc仅能识别出左边的类名.
* @see MyDocAppDelegate.someMethodByFloat:
// 仅 doxygen. appledoc仅能识别出左边的类名.
@interface MyDocViewController : UIViewController {
int _privateI
//!& 私有成员变量 (仅Doxygen具有EXTRACT_PRIVATE标识时, 会被归类为&Private 属性&).
@protected
int _protectedI
//!& protected成员变量 (仅Doxygen, 会被归类为&Protected 属性&).
id&MyDocDelegate& _
//!& 委托变量.
int _packageI
//!& 包内成员变量 (仅Doxygen, 会被归类为&Protected 属性&).
int _publicI
//!& 公开成员变量 (仅Doxygen, 会被归类为&Public 属性&).
#pragma mark - property
/// 数值属性.
@property (nonatomic,assign) NSI
/** 字符串属性.
* 属性的详细描述.
@property (nonatomic,strong) NSString*
// 测试行尾注释.
@property (nonatomic,strong) NSString* strend1;
/**& 行尾注释1. appledoc不支持会变为下一项的注释, doxygen 支持, 根据英文句号自动切分详细描述与详细描述. */
@property (nonatomic,strong) NSString* strend2;
/*!& 行尾注释2. appledoc不支持会变为下一项的注释, doxygen 支持, 会全部当作详细描述, 而缺少详细描述. */
@property (nonatomic,strong) NSString* strend3;
///& 行尾注释3. appledoc不支持会变为下一项的注释, doxygen 支持.
@property (nonatomic,strong) NSString* strend4;
//!& 行尾注释4. appledoc不支持会会忽略, doxygen 支持.
@property (nonatomic,assign)
/// 枚举的属性.
@property (nonatomic, assign) ObjCDocToolEnum docT
/// 结构体的属性.
@property (nonatomic, assign) RectInt rectI
/// 结构体常量指针的属性.
@property (nonatomic, assign) PCRectInt prectI
/// 联合体的属性.
@property (nonatomic, assign) FloatByte floatB
@property (nonatomic, strong) id&MyDocDelegate& delegate;
/** 链接测试.
* - / : 直接写url链接.
* - [Doxygen](http://www.stack.nl/~dimitri/doxygen/) : 为链接提供文本 .
* - MyDocDelegate : 接口.
* - DocA : 类.
* - [文档B](DocB) : 类的链接文本.(仅appledoc)
* - [文档B](@ref DocB) : 为\@ref链接提供文本 (仅doxygen. appledoc会把\@ref当作文本而生成错误的链接).
* - @ref DocB : \@ref链接 (仅doxygen. appledoc会把\@ref当作文本).
* @see str
* @see someMethodByStr:
* @see MyDocAppDelegate
* @see [MyDocAppDelegate window]
// 仅 appledoc. doxygen仅能识别出左边的类名.
* @see [MyDocAppDelegate someMethodByFloat:]
// 仅 appledoc. doxygen仅能识别出左边的类名.
* @see MyDocAppDelegate.window
// 仅 doxygen. appledoc仅能识别出左边的类名.
* @see MyDocAppDelegate.someMethodByFloat:
// 仅 doxygen. appledoc仅能识别出左边的类名.
@property (nonatomic,strong) NSString*
/** 本地链接测试1 (仅appledoc).
* - str : 自身属性.
* - someMethodByStr: : 自身方法.
* - MyDocViewController : 自身类.
// appledoc无法识别.
* - MyDocAppDelegate : 外部类.
@property (nonatomic,strong) NSString* alinklocal1;
/** 本地链接测试2 (仅appledoc).
* 只要出现了 \[ 类 成员 \] 形式的链接, 本地链接便会实效.
* - str : 自身属性.
* - someMethodByStr: : 自身方法.
* - MyDocViewController : 自身类.
// appledoc无法识别.
* - MyDocAppDelegate : 外部类.
* - [MyDocViewController str] : 自身属性.
@property (nonatomic,strong) NSString* alinklocal2;
/** 本地链接测试3 (仅appledoc).
* 只要出现了 \[ 类 成员 \] 形式的链接, 本地链接便会实效.
* - str : 自身属性.
* - someMethodByStr: : 自身方法.
* - MyDocViewController : 自身类.
// appledoc无法识别.
* - MyDocAppDelegate : 外部类.
* - [MyDocAppDelegate window] : 外部类属性.
* - [MyDocAppDelegate someMethodByFloat:] : 外部类方法.
@property (nonatomic,strong) NSString* alinklocal3;
#pragma mark - method
/// 简单方法.
- (void)someM
带整数参数的方法.
返回value.
- (int)someMethodByInt:(int)
带字符串参数的方法.
返回value.
@exception NSException 可能抛出的异常.
@see someMethod
@see someMethodByInt:
@warning 警告: appledoc中显示为蓝色背景, Doxygen中显示为红色竖条.
@bug 缺陷: appledoc中显示为黄色背景, Doxygen中显示为绿色竖条.
- (NSString*)someMethodByStr:(NSString*)
取得静态变量值的类方法.
返回_classInt静态变量的值.
+ (int)classI
/// 主页面的动作相关操作.
@interface MyDocViewController (Action)
调用动作回调函数
自定义数据.
@see callActionHandler:userdata:handler:
- (void)callActionCallback:(void*)sender userdata:(void*)userdata handler:(ActionCallback)
调用动作块函数.
自定义数据.
@see callActionCallback:userdata:handler:
- (void)callActionHandler:(id)sender userdata:(id)userdata handler:(ActionHandler)
MyDocViewController.h
  代码写好后,便可以使用appledoc或doxygen生成文档了,详见下面两章。
三、使用appledoc生成文档(docset、html)
3.1 安装appledoc
  安装appledoc十分简单。打开终端,输入以下命令&&
git clone git:///tomaz/appledoc.git
cd appledoc
sudo sh install-appledoc.sh
3.2 生成docset
  对于最新版本的appledoc来说,它默认时是生成docset文档并集成到xcode。  在终端中使用cd命令进入项目的文件夹,然后执行下列命令&&
appledoc --output ./doc --project-name objcdoc --project-company "zyl910" --company-id "cn.com.zyl910" .
  注&&--output ./doc:设置输出目录为&./doc&。--project-name objcdoc:设置项目名为&objcdoc&。--project-company "zyl910":设置公司名为&zyl910&。--company-id "cn.com.zyl910":设置公司id为&.zyl910&。.:当前目录。
  当该命令完成后,打开xcode中的Organizer - Documentation,会发现其中新增了帮助文档&&
3.3 生成html
  当需要html文档时,可以加上&--no-create-docset&&&
appledoc --no-create-docset --output ./doc --project-name objcdoc --project-company "zyl910" --company-id "cn.com.zyl910" .
  当该命令完成后,使用打开doc/html/index.html&&
四、使用doxygen生成文档(html、pdf)
4.1 安装doxygen
  doxygen支持安装与dmg安装。想省事的话,可以选择dmg安装。去doxygen官网()下载最新的dmg。  dmg下载下来后,双击加载dmg,然后把.app文件拖入文件夹,便完成了安装。
4.2 生成html
  doxygen有图形,可通过Launchpad打开。
  在step 1中选择好项目的路径。  step 2默认是Wizard-&Project页面,在其中&&1) 在&Project name&中填写项目名。2) 勾选&Sacn recursively&,扫描所有的子文件夹。3) 在&Destination directory&中填写好文档的输出目录。这里我填的是&docs&。
  点击中间的&Expert&切换Expert-&Project页面,在其中&&1) 将&OUTPUT_LANGUAGE&设为&Chinese&,使用简体中文。2) 勾选&JAVADOC_AUTOBRIEF&,自动将注释的第1段识别为简要描述。
  点击中间的&Run&切换Run页面,然后点击&Run doxygen&按钮生成文档。
  当文档生成完毕后,使用浏览器打开docs/html/index.html&&
4.3 生成pdf
  doxygen默认会为生成pdf做好准备。切换到Wizard-&Project,会发现它自动勾选了&LaTex&与&as intermediate format for hyperlinked PDF&。  doxygen本身并不能直接输出pdf文件,而是生成了latex目录,其中有一个 makefile 文件。若系统中装好了pdflatex,可在latex目录中运行&make&命令来生成pdf文件。  怎样才能装好pdflatex呢?mac平台可安装MacTeX。打开
,下载& MacTeX.pkg (约2.1GB)。MacTeX.pkg下载好后,可双击运行,根据向导来安装。
  环境装好之后,当在latex目录中运行&make&命令来生成pdf文件时,你会发现&&纯英文文档能顺利生成pdf;而含有中文时,不能顺利生成pdf文件。
  对于latex排版,doxygen其实已经做了很多准备,比如&&源文件是UTF-8编码,并默认使用了utf8 package。理论上是支持多国语言的。  可对于中文来说,还需要加载 CJKutf8 package,并配置好CJK环境。这才能顺利的使用中文。
  用文本编辑器打开docxygen生成的latex目录中的refman.tex。找到&\begin{document}&这一行,将其修改为&&
\usepackage{CJKutf8}
\begin{document}
\begin{CJK}{UTF8}{gbsn}
  然后再找到&\end{document}&这一行,将其修改为&&
\end{document}
  保存并关闭refman.tex。  然后打开终端,使用cd命令进入latex目录,然后执行&make&命令。
  执行完毕后后,该目录中会出现&refman.pdf&&&
参考文献&&[appledoc]《Comments formatting style》. Gentle Bytes. [doxygen]《Markdown support》. doxygen. [doxygen]《Special Commands》. doxygen. 《Amazing Apple-like Documentation》. . 《使用Objective-C的文档生成工具:appledoc》. 唐巧, . 《关于查看自已写的方法的&描述&(AppleDoc)》. Rainbird, . 《用Doxygen为Objective-C代码生成文档》. Seven's, . 《Xcode4快速Doxygen文档注释 & 简明图文教程(3分钟后爽歪歪)》. chukong-inc, . 《使用doxygen生成中文pdf文档》. zyl910, .
源码下载&&
.Net 文章一周点击
.Net 文章一月点击
HaoGongJu.Net ( 好代码 ) All Rights Reserved

我要回帖

更多关于 removewatermark 的文章

 

随机推荐