日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Objective-C 注释规范心得

發(fā)布時間:2024/9/30 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Objective-C 注释规范心得 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者:zyl910??

本文轉(zhuǎn)載自:http://www.cnblogs.com/zyl910/archive/2013/06/07/objcdoc.html

  手工寫文檔是一件苦差事,幸好現(xiàn)在有從源碼中抽取注釋生成文檔的專用工具。對于Objective-C來說,目前最好用的工具是appledoc和doxygen。可是這兩種工具對于注釋的要求略有區(qū)別。于是我經(jīng)過一番摸索,找到了一套能同時兼容這兩種工具的注釋寫法。

  工具簡介——
appledoc:簡單方便,適于生成apple風(fēng)格的html文檔,及直接集成到xcode幫助(docset)。官網(wǎng)?http://gentlebytes.com/appledoc/?。
doxygen:功能強(qiáng)大,適于生成html文檔與pdf文檔。官網(wǎng)?http://www.stack.nl/~dimitri/doxygen/index.html?。

  系統(tǒng)環(huán)境——
Mac OS X Lion 10.7.5
Xcode 4.6.2
appledoc 2.1
doxygen 1.8.4
MacTeX-2012

一、注釋寫法

  提示:這一章主要是參考性內(nèi)容,比較枯燥。請根據(jù)需要來閱讀——
對于想簡單學(xué)一下注釋寫法的,讀前4節(jié)就行了;
對于想全面學(xué)習(xí)appledoc與doxygen均兼容的注釋寫法的,讀前6節(jié)就行了;
對于既想使用appledoc,又想使用doxygen增強(qiáng)效果的,請閱讀所有的節(jié)。

1.1 注釋形式

  標(biāo)準(zhǔn)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 spreadingover multiple lines. No star.*//*! Single line comment. *//*! Single line comment spreadingover multiple lines.*/

?

  雖然appledoc與doxygen都支持。但在平時編寫代碼時,為了避免風(fēng)格雜亂的視覺污染,應(yīng)該固定使用注釋形式。

1.1.1 單行注釋

  在很多時候只需寫一個簡要描述就夠了,這時最好使用單行注釋。推薦格式為——

/// 簡要描述.

?

  appledoc與doxygen均會將單行的“///”注釋識別為簡要描述。兼容性非常高。

  備注——
1) 文本最好統(tǒng)一以英文句號(.)結(jié)尾。這樣做有助于代碼閱讀,明確地得知該段文本已經(jīng)結(jié)束,而且有助于避免亂碼時的換行符丟失問題。
2) 不要連續(xù)多行使用“///”。doxygen在默認(rèn)情況下,會將多行的“///”當(dāng)作詳細(xì)描述,而沒有簡要注釋. 雖然可以修改doxygen的配置以解決上述問題,但多行“///”本身是違背“簡要描述”這個初衷的.

1.1.2 多行注釋

  當(dāng)需要寫詳細(xì)描述時,這時就需要使用多行注釋了。推薦格式為——

/** 簡要描述.** 詳細(xì)描述或其他.*/

?

  對于appledoc與使用了JAVADOC_AUTOBRIEF參數(shù)的doxygen來說,它們均會將注釋中的第一段識別為簡要描述,然后將后面的段識別為詳細(xì)描述.

  其實doxygen的標(biāo)準(zhǔn)多行注釋為——

/*** @brief 簡要描述.** 詳細(xì)描述或其他.*/

?

  可惜appledoc對@brief指令的支持存在缺陷——@brief不能出現(xiàn)類、協(xié)議的注釋中,會導(dǎo)致后續(xù)內(nèi)容丟失。 @brief多行注釋僅能安全的用在屬性、方法的注釋中。

  備注——
1) 多行注釋存在“段”的概念,以內(nèi)容為空的行作為分段依據(jù)。如果沒有空行隔開的話,會將連續(xù)有內(nèi)容的行連接起來組成一段.
2) 如果省略中間各行行首的星號(*),appledoc與doxygen也能識別。當(dāng)考慮到注釋縮進(jìn)、美觀性、兼容性,還是建議不要省略行首星號。

1.1.3 行尾注釋(僅doxygen)

  在對枚舉、結(jié)構(gòu)體等類型的成員進(jìn)行注釋時,為了使內(nèi)容更加緊湊,我們一般喜歡在行尾寫注釋。
  可惜目前僅有doxygen支持行尾注釋,而appledoc不支持。

  doxygen支持以下4種行尾注釋——

/**< 行尾注釋1. appledoc不支持會變?yōu)橄乱豁椀淖⑨? doxygen 支持, 根據(jù)英文句號自動切分簡要描述與詳細(xì)描述. */ /*!< 行尾注釋2. appledoc不支持會變?yōu)橄乱豁椀淖⑨? doxygen 支持, 會全部當(dāng)作詳細(xì)描述, 而缺少簡要描述. */ ///< 行尾注釋3. appledoc不支持會變?yōu)橄乱豁椀淖⑨? doxygen 支持. //!< 行尾注釋4. appledoc不支持會會忽略, doxygen 支持.

?

  為了避免appledoc誤將行尾注釋當(dāng)作下一項的注釋,故推薦第4種注釋——既以“//!<”開頭的注釋。


1.2 類(協(xié)議、分類)的注釋

  對于類(協(xié)議、分類)來說,一般只需要寫簡要描述就行了,這時可以使用單行注釋——

/// 文檔A. @interface DocA : NSObject

?

  當(dāng)需要留下詳細(xì)描述時,可換成多行注釋——

/** 文檔B.** 文檔B的詳細(xì)描述.*/ @interface DocB : NSObject

?


1.3 屬性的注釋

  對于屬性來說,本來使用行尾注釋是最好的,能使內(nèi)容更加緊湊。可惜目前appledoc不支持行尾注釋。只好退而求其次,選擇單行注釋了——

/// 數(shù)值屬性. @property (nonatomic,assign) NSInteger num;

?

  當(dāng)需要留下詳細(xì)描述時,可換成多行注釋——

/*** @brief 字符串屬性.** 屬性的詳細(xì)描述.*/ @property (nonatomic,strong) NSString* str;

?


1.4 方法的注釋

  對于沒有參數(shù)、返回值的簡單方法,可以使用單行注釋——

/// 簡單方法. - (void)someMethod;

?

  若方法具有參數(shù)或返回值,這時就得使用多行注釋了——

/*** @brief 帶整數(shù)參數(shù)的方法.** @param value 值.** @return 返回value.*/ - (int)someMethodByInt:(int)value;

?

  指令說明——
@param <name> <description>: 參數(shù)描述.
@return <description>: 返回值描述.

  由于方法注釋需要填寫的內(nèi)容較多(參數(shù)列表與返回值等),所以現(xiàn)在有很多插件可以幫忙生成方法的注釋,而這些插件一般是使用@brief多行注釋的。例如參考文獻(xiàn)中的《Xcode4快速Doxygen文檔注釋 — 簡明圖文教程(3分鐘后爽歪歪)》.

  在某些時候,我們還需要在方法注釋種填寫異常、參見、警告 等信息——

/*** @brief 帶字符串參數(shù)的方法.** @param value 值.** @return 返回value.** @exception NSException 可能拋出的異常.** @see someMethod* @see someMethodByInt:* @warning 警告: appledoc中顯示為藍(lán)色背景, Doxygen中顯示為紅色豎條.* @bug 缺陷: appledoc中顯示為黃色背景, Doxygen中顯示為綠色豎條.*/ - (NSString*)someMethodByStr:(NSString*)value;

?

  指令說明——
@exception <name> <description>: 異常描述.
@see <name>: 參見. 具體用法詳見 1.5.2 @see、@sa(參見) .
@warning <text>: 警告.
@bug <text>: 警告.


1.5 appledoc、doxygen均支持的指令

  指令一般以“@”開頭,也可以使用“\”等符號開頭。 若想在文本中使用“@”、“\”等符號,可使用“\”轉(zhuǎn)義符,例如“\@”、“\\”等。

1.5.1 指令列表

  指令在appledoc中被稱作“Directive”,而在doxygen中被稱作“Command”。
  appledoc沒有專門指令參考文檔,僅在《Comments formatting style》中給了幾個簡單示例。
  而doxygen有詳細(xì)的指令參考文檔,詳見《Special Commands》。

  經(jīng)過測試,我發(fā)現(xiàn)下列指令在appledoc與doxygen中均是有效的——
@brief <title>: 簡要注釋. appledoc中僅對屬性、方法有效,對類、協(xié)議 無效,會造成后續(xù)內(nèi)容解析失敗.
@param <name> <description>: 參數(shù)描述.
@return <description>: 返回值描述.
@exception <name> <description>: 異常描述.
@see <name>: 參見.
@sa <name>: 參見. 同@see.
@warning <text>: 警告.
@bug <text>: 警告.
@name <title>: 組名. 用于給成員們分組, 既文檔中Tasks區(qū)的子類別.


1.5.2 @see、@sa(參見)

  參見指令的格式為——
@see <name>
@sa <name>

  在保證appledoc與doxygen均兼容的情況下,<name>可為——
1) 當(dāng)前類(或協(xié)議)中的屬性或方法。(注意Objective-C方法簽名的寫法,一般為“方法名:參數(shù)1:參數(shù)2:??”的格式)
2) 類(或協(xié)議)名。(注意appledoc不支持當(dāng)前類)

  雖然appledoc與doxygen都支持參見“其他類或協(xié)議中的成員”,可惜它們的寫法不同,而且相互不兼容——
appledoc:使用Objective-C消息語法,既“[類 成員]”格式。
doxygen:使用傳統(tǒng)的對象成員訪問語法,既“類.成員”格式。

  注意本指令與@brief指令存在同樣的問題——appledoc中僅對屬性、方法有效,對類、協(xié)議 無效,會造成后續(xù)內(nèi)容解析失敗。 這時有兩種處理策略——
1) 將參見指令放在注釋的最后面,避免內(nèi)容丟失,且能保證在doxygen中的效果.
2) 使用鏈接來代替參見。詳見 1.6.4 鏈接。


1.6 appledoc、doxygen均支持的排版格式

  無格式的純文本看起來比較費勁,得進(jìn)行格式排版,以提高文檔的組織性與表現(xiàn)力。appledoc與doxygen均有自己的一套約定——
appledoc可參考《Comments formatting style》。
doxygen可參考《Markdown support》。

  本節(jié)將會介紹appledoc與doxygen均支持的排版格式。

1.6.1 代碼文本

  有時需要在一段話中引入一小段代碼,這時可以用重音符(`)將那一段代碼給包起來。例如——

/*** 引用短代碼, 如 `someMethodByStr:` .*/

?


1.6.2 代碼塊

  代碼塊適用于需要在注釋中放置多行代碼的情況。具體辦法是在每行內(nèi)容的前面加一個tab字符,例如——

/*** 示例代碼:** int sum=0;* for(int i=1; i<=10; ++i) {* sum += i;* }*/

?

?

  因為空格與Tab字符均顯示為空白,不易區(qū)分。于是用<space>、<tab>表達(dá)空格與tab字符,上述注釋實際為——

/** <space>*<space>示例代碼: <space>* <space>*<space><tab>int sum=0; <space>*<space><tab>for(int i=1; i<=10; ++i) { <space>*<space><tab><tab>sum += i; <space>*<space><tab>} <space>*/

?

  因每行注釋開始的星號(*)與內(nèi)容之間必須用空白型字符隔開,所以平時用空格或tab字符都行。但在使用代碼塊時,為了避免對Tab字符的誤判,內(nèi)容最好嚴(yán)格以“<space><tab>”開頭(既每行以“<space>*<space><tab>”開頭)。

  備注——
1) 注意段的概念,代碼塊與前后文本之間應(yīng)該空開一行。
2) appledoc與doxygen還支持將4個空格當(dāng)作一個tab字符。但4個字符的錄入、維護(hù)起來會更費力一些,不推薦使用。

1.6.2.1 xcode中輸入代碼塊

  在xcode中,按下Tab鍵時,會自動整合前面的空格字符,導(dǎo)致代碼塊排版失效。所以建議先在多行注釋中粘貼代碼,然后在行前輸入“*<space><tab>”。范例如下——

  首先,最初的注釋是這樣的——

/*** @brief 簡要描述.** 詳細(xì)描述或其他.*/

?

  第一步,在多行注釋中粘貼代碼,注意xcode會自動對新粘貼內(nèi)容進(jìn)行排版,在每一行的前面加一個空格——

/*** @brief 簡要描述.** 詳細(xì)描述或其他.int sum=0;for(int i=1; i<=10; ++i) {sum += i;}*/

?

  第二步,補(bǔ)齊行首。復(fù)制“*<space><tab>”,對于先前所粘貼的那段代碼,在每一行的第二個字符處粘貼,以形成“<space>*<space><tab>”開頭的代碼塊格式——

/*** @brief 簡要描述.** 詳細(xì)描述或其他.* int sum=0;* for(int i=1; i<=10; ++i) {* sum += i;* }*/

?

  第三步,修尾。增加空行,增加“代碼:”行,提示下面是代碼——

/*** @brief 簡要描述.** 詳細(xì)描述或其他.** 代碼:** int sum=0;* for(int i=1; i<=10; ++i) {* sum += i;* }*/

?


1.6.3 列表

1.6.3.1 無序列表

  在內(nèi)容的每一行開頭使用“-”、“+”或“*”字符,可創(chuàng)建無序列表。例如——

/*** 無序列表:** - abc* - xyz* - rgb*/

?

1.6.3.2 有序列表

  使用數(shù)字與小數(shù)點,可創(chuàng)建有序列表。例如——

/*** 有序列表:** 1. first.* 2. second.* 3. third.*/

?

1.6.3.3 多級列表

  使用tab字符配合使用無序列表或多級列表,可創(chuàng)建多級列表。例如——

/*** 多級列表:** - xyz* - x* - y* - z* - rgb* - red* 1. first.* 1. alpha.* 2. beta.* 2. second.* 3. third.* - green* - blue*/

?


1.6.4 鏈接

  鏈接有三種形式——
1) 直接鏈接。格式為 <link>。會將鏈接地址直接作為文本來顯示。
2) 文本鏈接。格式為 [text](<link>)。使用自定義的文本作為鏈接名。
3) 交叉引用鏈接。比較復(fù)雜,且難以兼容appledoc與doxygen,故本文不討論。

1.6.4.1 Url

  在注釋中直接寫上url便會自動創(chuàng)建鏈接,例如——

/*** http://appledoc.gentlebytes.com/ : 直接寫url鏈接.*/

?

  還可以使用文本鏈接形式——

/*** [Doxygen](http://www.stack.nl/~dimitri/doxygen/) : 為鏈接提供文本 .*/

?

1.6.4.2 類與協(xié)議

  在注釋中直接寫上類(或協(xié)議)名,并注意左右兩側(cè)留空格,appledoc與doxygen便會自動生成指向該類(或協(xié)議)的鏈接。例如——

/*** DocA : 類.*/

?

  但對于文本鏈接來說,appledoc與doxygen的寫法不同——

/*** - [文檔B](DocB) : 類的鏈接文本.(僅appledoc)* - [文檔B](@ref DocB) : 為\@ref鏈接提供文本 (僅doxygen. appledoc會把\@ref當(dāng)作文本而生成錯誤的鏈接).*/

?

  建議還是使用直接鏈接吧。

1.6.4.3 屬性與方法(僅appledoc)

  如果注釋中出現(xiàn)了 [類 成員],appledoc會自動的為其創(chuàng)建鏈接,但doxygen不支持此功能。

  如果注釋中出現(xiàn)當(dāng)前類的屬性或方法名,appledoc會自動的為其創(chuàng)建鏈接,但doxygen不支持此功能。而且appledoc還存在Bug——如果在同一片注釋中出現(xiàn)了[類 成員],那么當(dāng)前類的的屬性或方法的鏈接會失效。

  這么不穩(wěn)定的功能還是暫時別用吧。


1.7 常用的doxygen注釋示例

  doxygen的注釋功能多的令人眼花繚亂,這里還是介紹幾種常用寫法吧。

1.7.1 文件頭

  一般格式為——

/*** @file MyDocViewController.h* @brief 主頁面.* @author [zyl910](http://www.cnblogs.com/zyl910/)* @version 1.0* @date 2013-06-07** # update (更新日志)** [2013-06-07] <zyl910> v1.0** + v1.0版發(fā)布.**/

?

  指令說明——
@file [<name>]:文件名.
@author <list of authors>:作者. 這里我使用了鏈接,詳見 1.6.4 鏈接 .
@version <version number>:版本號.
@date <date description>:日期.

  以井號(#)開頭的行表示是標(biāo)題。如果有1個井號(#),表示是一級標(biāo)題。如果有2個井號(##),表示是二級標(biāo)題,以此類推。

1.7.2 枚舉、結(jié)構(gòu)體、聯(lián)合體與typedef

  對于枚舉、結(jié)構(gòu)體、聯(lián)合體等類型,一般可選用單行注釋或多行注釋。對于其中的成員,推薦使用行尾注釋。例如——

/// Objective-C 文檔工具枚舉 (枚舉, 僅Doxygen). typedef enum _ObjCDocToolEnum{ObjCDocToolEnumAppleDoc = 1, //!< AppleDoc. http://appledoc.gentlebytes.com/ .ObjCDocToolEnumDoxygen, //!< Doxygen. http://www.stack.nl/~dimitri/doxygen/ . }ObjCDocToolEnum;/** 整數(shù)矩形 (結(jié)構(gòu)體, 僅Doxygen).** 結(jié)構(gòu)體的詳細(xì)描述.*/ typedef struct _RectInt {int x; //!< 橫坐標(biāo).int y; //!< 縱坐標(biāo).int width; //!< 寬度.int height; //!< 高度. }RectInt, *PRectInt; //!< 整數(shù)矩形的指針. typedef const RectInt* PCRectInt; //!< 整數(shù)矩形的常量指針./// 浮點數(shù)的字節(jié)(聯(lián)合體, 僅Doxygen). typedef union _FloatByte {float f; //!< 單精度浮點數(shù).unsigned char bytes[4]; //!< 4個字節(jié). } FloatByte;

?  注意行尾注釋是對前一項的注釋,所以一定要使用分號(;)或逗號(,)標(biāo)明本項成員定義好后,再寫行尾注釋。包括最后一個成員。

  在定義結(jié)構(gòu)體時,一般還需要定義其相關(guān)的指針類型與常量指針類型——
定義指針類型時,可以跟結(jié)構(gòu)體的定義寫在一起,利用行尾注釋的特點來注釋。
定義常量指針類型時,需要單獨寫一行typedef,并使用行尾注釋。


1.7.3 宏

  對于常量形式的簡單宏,推薦使用行尾注釋。例如——

#define BUFSIZE 100 //!< 緩沖區(qū)大小 (簡單宏, 僅Doxygen).

?

  對于帶參數(shù)的宏,可參考“方法的注釋”寫多行注釋。例如——

/*** @brief 最小值 (參數(shù)宏, 僅Doxygen).** @param a 值a.* @param b 值b.** @return 返回兩者中的最小值.*/ #define min(a,b) ( ((a)<(b)) ? (a) : (b) )

?


1.7.4 函數(shù)指針與塊函數(shù)(Block Objects)

  對于函數(shù)指針與塊函數(shù),也可參考“方法的注釋”寫多行注釋。例如——

/*** @brief 動作回調(diào)函數(shù).** @param sender 發(fā)送者.* @param userdata 自定義數(shù)據(jù).*/ typedef void (*ActionCallback)(void* sender, void* userdata);/*** @brief 動作塊函數(shù).** @param sender 發(fā)送者.* @param userdata 自定義數(shù)據(jù).*/ typedef void (^ActionHandler)(id sender, id userdata);

?

1.7.5 成員變量

  對于成員變量,推薦使用行尾注釋。例如——

@interface MyDocViewController : UIViewController {@privateint _privateInt; //!< 私有成員變量 (僅Doxygen具有EXTRACT_PRIVATE標(biāo)識時, 會被歸類為“Private 屬性”).@protectedint _protectedInt; //!< protected成員變量 (僅Doxygen, 會被歸類為“Protected 屬性”).id<MyDocDelegate> _delegate; //!< 委托變量. @packageint _packageInt; //!< 包內(nèi)成員變量 (僅Doxygen, 會被歸類為“Protected 屬性”).@publicint _publicInt; //!< 公開成員變量 (僅Doxygen, 會被歸類為“Public 屬性”). }

?


二、編碼演練

  前面說了很多理論知識,現(xiàn)在創(chuàng)建一個項目來演練一下吧。

  打開Xcode,新建一個名為“MyDoc”的“Single View Application”的iOS項目。

  然后打開MyDocViewController.h,在里面練習(xí)注釋。
  全部代碼——

?MyDocViewController.h

?

  代碼寫好后,便可以使用appledoc或doxygen生成文檔了,詳見下面兩章。

三、使用appledoc生成文檔(docset、html)

3.1 安裝appledoc

  安裝appledoc十分簡單。打開終端,輸入以下命令——

git clone git://github.com/tomaz/appledoc.git cd appledoc sudo sh install-appledoc.sh

?

3.2 生成docset

  對于最新版本的appledoc來說,它默認(rèn)時是生成docset文檔并集成到xcode。
  在終端中使用cd命令進(jìn)入項目的文件夾,然后執(zhí)行下列命令——

appledoc --output ./doc --project-name objcdoc --project-company "zyl910" --company-id "cn.com.zyl910" .

  注——
--output ./doc:設(shè)置輸出目錄為“./doc”。
--project-name objcdoc:設(shè)置項目名為“objcdoc”。
--project-company "zyl910":設(shè)置公司名為“zyl910”。
--company-id "cn.com.zyl910":設(shè)置公司id為“cn.com.zyl910”。
.:當(dāng)前目錄。

  當(dāng)該命令完成后,打開xcode中的Organizer - Documentation,會發(fā)現(xiàn)其中新增了幫助文檔——


3.3 生成html

  當(dāng)需要html文檔時,可以加上“--no-create-docset”——

appledoc --no-create-docset --output ./doc --project-name objcdoc --project-company "zyl910" --company-id "cn.com.zyl910" .

  當(dāng)該命令完成后,使用瀏覽器打開doc/html/index.html——

四、使用doxygen生成文檔(html、pdf)

4.1 安裝doxygen

  doxygen支持源碼編譯安裝與dmg安裝。想省事的話,可以選擇dmg安裝。去doxygen官網(wǎng)(http://www.stack.nl/~dimitri/doxygen/download.html)下載最新的dmg。
  dmg下載下來后,雙擊加載dmg,然后把.app文件拖入應(yīng)用程序文件夾,便完成了安裝。

4.2 生成html

  doxygen有圖形界面,可通過Launchpad打開。

  在step 1中選擇好項目的路徑。
  step 2默認(rèn)是Wizard->Project頁面,在其中——
1) 在“Project name”中填寫項目名。
2) 勾選“Sacn recursively”,掃描所有的子文件夾。
3) 在“Destination directory”中填寫好文檔的輸出目錄。這里我填的是“docs”。

  點擊中間的“Expert”切換Expert->Project頁面,在其中——
1) 將“OUTPUT_LANGUAGE”設(shè)為“Chinese”,使用簡體中文。
2) 勾選“JAVADOC_AUTOBRIEF”,自動將注釋的第1段識別為簡要描述。

  點擊中間的“Run”切換Run頁面,然后點擊“Run doxygen”按鈕生成文檔。

  當(dāng)文檔生成完畢后,使用瀏覽器打開docs/html/index.html——


4.3 生成pdf

  doxygen默認(rèn)會為生成pdf做好準(zhǔn)備。切換到Wizard->Project,會發(fā)現(xiàn)它自動勾選了“LaTex”與“as intermediate format for hyperlinked PDF”。

  doxygen本身并不能直接輸出pdf文件,而是生成了latex目錄,其中有一個 makefile 文件。若系統(tǒng)中裝好了pdflatex,可在latex目錄中運行“make”命令來生成pdf文件。
  怎樣才能裝好pdflatex呢?mac平臺可安裝MacTeX。打開?http://www.tug.org/mactex/?,下載? MacTeX.pkg (約2.1GB)。MacTeX.pkg下載好后,可雙擊運行,根據(jù)向?qū)戆惭b。

  環(huán)境裝好之后,當(dāng)在latex目錄中運行“make”命令來生成pdf文件時,你會發(fā)現(xiàn)——純英文文檔能順利生成pdf;而含有中文時,不能順利生成pdf文件。

  對于latex排版,doxygen其實已經(jīng)做了很多準(zhǔn)備,比如——源文件是UTF-8編碼,并默認(rèn)使用了utf8 package。理論上是支持多國語言的。
  可對于中文來說,還需要加載 CJKutf8 package,并配置好CJK環(huán)境。這才能順利的使用中文。

  用文本編輯器打開docxygen生成的latex目錄中的refman.tex。找到“\begin{document}”這一行,將其修改為——

\usepackage{CJKutf8} \begin{document} \begin{CJK}{UTF8}{gbsn}

  然后再找到“\end{document}”這一行,將其修改為——

\end{CJK} \end{document}

  保存并關(guān)閉refman.tex。
  然后打開終端,使用cd命令進(jìn)入latex目錄,然后執(zhí)行“make”命令。


  執(zhí)行完畢后后,該目錄中會出現(xiàn)“refman.pdf”——


參考文獻(xiàn)——
[appledoc]《Comments formatting style》. Gentle Bytes.?http://gentlebytes.com/appledoc-docs-comments/
[doxygen]《Markdown support》. doxygen.?http://www.stack.nl/~dimitri/doxygen/manual/markdown.html
[doxygen]《Special Commands》. doxygen.?http://www.stack.nl/~dimitri/doxygen/manual/commands.html
《Amazing Apple-like Documentation》. 2011-11-29.?http://www.cocoanetics.com/2011/11/amazing-apple-like-documentation/
《使用Objective-C的文檔生成工具:appledoc》. 唐巧, 2012-02-01.?http://blog.devtang.com/blog/2012/02/01/use-appledoc-to-generate-xcode-doc/
《關(guān)于查看自已寫的方法的“描述”(AppleDoc)》. Rainbird, 2012-11-25.?http://blog.cnrainbird.com/index.php/2012/11/25/guan_yu_cha_kan_zi_yi_xie_de_fang_fa_de_miao_shu_appledoc/
《用Doxygen為Objective-C代碼生成文檔》. Seven's, 2011-11-20.?http://www.dreamingwish.com/dream-2011/use-doxygen-to-generate-documentation-Objective-C-code.html
《Xcode4快速Doxygen文檔注釋 — 簡明圖文教程(3分鐘后爽歪歪)》. chukong-inc, 2012-05-16.?http://blog.chukong-inc.com/index.php/2012/05/16/xcode4_fast_doxygen/
《使用doxygen生成中文pdf文檔》. zyl910, 2013-06-02.?http://www.cnblogs.com/zyl910/archive/2013/06/02/doxygen_pdf_chinese.html


源碼下載——?
http://files.cnblogs.com/zyl910/objcdoc.zip

總結(jié)

以上是生活随笔為你收集整理的Objective-C 注释规范心得的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产盗摄一区二区三区 | av网站免费在线播放 | 一区二区中文字幕在线观看 | 性视频欧美 | 成人国产精品久久久网站 | 国产香蕉在线 | 精品亚洲天堂 | 伊人亚洲 | 一区二区三区亚洲 | 亚洲欧美视频在线 | 国产欧美日韩综合 | 69av一区二区三区 | 日日夜夜爱爱 | 丰满少妇被猛烈进入一区二区 | 国产最新在线观看 | 精品国产影院 | eeuss国产一区二区三区 | 免费看一级黄色大片 | 葵司ssni-879在线播放 | 国内精品99 | 国产免费激情视频 | 黑人乱码一区二区三区av | 女同爱爱视频 | 91影院在线免费观看 | 超碰97免费在线 | 伊人春色在线视频 | 国产精品久久久精品 | 66av欧美| 欧美爽爽爽 | 97播播| 岛国精品在线播放 | 精品一区二区三区电影 | 久久蜜臀 | av在线免播放器 | 岛国中文字幕 | 欧美成人aaa片一区国产精品 | 欧美成人aaa | 精品少妇av | 免费视频爱爱太爽 | 亚洲91精品| 欧美一区二区视频在线 | 亚洲深夜av | 亚洲av网址在线 | 麻豆传媒网址 | 日韩精品视频一区二区三区 | 免费在线成人 | 日韩不卡一二三区 | 伊人久久大香线 | jizz日本免费 | 一级中国毛片 | 亚洲无码国产精品 | 国产又好看的毛片 | jizz处女| 大陆日韩欧美 | 日日爱av | 少妇一区二区三区四区 | av先锋影音 | 一区三区在线 | 最新国产中文字幕 | 中文字幕+乱码+中文乱码91 | 国产一区二区在线播放视频 | 欧美成人激情视频 | 欧美综合视频在线观看 | 亚洲免费观看视频 | 明星双性精跪趴灌满h | 国产三区在线视频 | 久久精品男人的天堂 | 国产不卡在线观看 | 日韩高清一区二区 | 网站黄在线观看 | 精品h视频 | 在线aa| 欧美精品成人一区二区在线观看 | 四虎视频国产精品免费 | 欧美福利视频导航 | 亚洲吧| 欧美一区二区三区成人片在线 | av日韩一区| 91午夜免费视频 | 国产亚洲AV无码成人网站在线 | 国产真人无码作爱视频免费 | 黄色片在线免费观看视频 | 中文字幕在线不卡视频 | 小明成人免费视频 | 日韩精品免费电影 | 黄色成人免费网站 | 一级黄色片免费 | 少妇影院在线观看 | xxx色| 99久久婷婷国产一区二区三区 | 国产人妖ts重口系列网站观看 | 久久久天堂国产精品女人 | 男性裸体全身精光gay | 国产日韩欧美一区二区 | 玖玖爱在线观看 | 精品91在线| av看片| 午夜天堂精品久久久久 | 久久精品一区二区在线观看 |