使用Objective-C的文档生成工具:appledoc

前言

做项目的人多了,就需要文档了。今天开始尝试写一些项目文档。但是就源代码来说,文档最好和源码在一起,这样更新起来更加方便和顺手。象Java语言本身就自带javadoc命令,可以从源码中抽取文档。今天抽空调研了一下objective-c语言的类似工具。

stackoverflow 上找到三个比较popular的工具:doxygen, headdoc和appledoc 。它们分别的官方网址如下:

介绍

我把这3个工具都大概调研了一下,说一下我的感受。

docxygen

docxygen感觉是这3个工具中支持语言最多的,可以配置的地方也比较多。我大概看了一下文档,觉得还是比较复杂,而且默认生成的风格与苹果的风格不一致。就去看后面2个工具的介绍了。另外,它虽然是开源软件,但是没有将源码放到github上让我感觉这个工具的开发活跃度是不是不够。

headerdoc

headerdoc是xcode 自带的文档生成工具。在安装完xcode后,就可以用命令行:headdoc2html + 源文件名 来生成对应的文档。我个人试用了一下,还是比较方便的,不过headerdoc的注释生成规则比较特别,只生成以 /*! */ 的格式的注释。还有一个缺点是每个类文件对应一个注释文件,没有汇总的文件,这点感觉有点不爽。

appledoc

appledoc是在stackoverflow上被大家推荐的一个注释工具。有几个原因造成我比较喜欢它:

  1. 它默认生成的文档风格和苹果的官方文档是一致的,而doxygen需要另外配置。
  2. appledoc就是用objective-c生成的,必要的时候调试和改动也比较方便。
  3. 可以生成docset,并且集成到xcode中。这一点是很赞的,相当于在源码中按住option再单击就可以调出相应方法的帮助。
  4. appledoc源码在github上,而doxygen在svn上。我个人比较偏激地认为比较活跃的开源项目都应该在github上。
  5. 相对于headerdoc,它没有特殊的注释要求,可以用/** */ 的格式,也可以兼容/*! */的格式的注释,并且生成的注释有汇总页面。

安装

那么简单介绍一下如何安装appledoc,安装非常简单,只需要2步:

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

使用

使用appledoc时,只需要用如下命令即可:

1
appledoc -o ./doc --project-name ynote --project-company youdao .

appledoc会扫描当前路径下的所有文件,然后生成好文档放到doc目录下。你也可以用appledoc –help查看所有可用的参数。

基本上使用起来还是比较方便的,详细的信息可以查看官方的文档:http://gentlebytes.com/appledoc/


文章出处:http://blog.devtang.com/blog/2012/02/01/use-appledoc-to-generate-xcode-doc/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Objective-C 中,使用 `std::string` 会报错的原因是 Objective-C 和 C++ 是两种不同的编程语言,它们的语法和特性不完全兼容。 Objective-C 是一种面向对象的编程语言,它是在 C 语言的基础上发展而来的,并且主要用于开发 macOS 和 iOS 平台的应用程序。Objective-C 的字符串类型是 `NSString`,它是 Foundation 框架提供的一个类,具有很多方便的字符串操作方法。 而 `std::string` 是 C++ 标准库提供的一个类,用于处理字符串。C++ 是一种支持面向对象编程的通用编程语言,与 C 语言相比,具有更多的高级特性和功能。 在 Objective-C 中,如果想要使用 `std::string`,需要进行一些额外的工作。首先,需要在文件的开头添加 `#import <string>` 语句来引入 C++ 的标准库。然后,需要使用 `[[NSString stringWithCString:stdString.c_str() encoding:NSUTF8StringEncoding]]` 这样的方法将 `std::string` 转换成 `NSString` 对象。 如果没有正确导入 C++ 的标准库或者没有进行正确的类型转换,使用 `std::string` 就会报错。所以,在 Objective-C使用 `std::string` 之前,需要确保已经正确导入标准库并进行了适当的类型转换。 总之,Objective-C 和 C++ 是两种不同的编程语言,对应于不同的字符串类型。在 Objective-C使用 `std::string` 会报错,需要进行额外的导入和类型转换才能正确使用。 ### 回答2: 在Objective-C中,无法直接使用std::string,因为std::string是C++中的标准库类型,并不是Objective-C的一部分。 如果在Objective-C代码中使用std::string,会导致编译错误,因为Objective-C编译器无法找到std::string的定义。 解决这个问题的一种方法是将std::string转换为NSString。可以使用NSString的initWithUTF8String方法将std::string转换为NSString对象。具体代码如下: ``` std::string cppString = "Hello, World!"; NSString* objcString = [[NSString alloc] initWithUTF8String:cppString.c_str()]; ``` 这样就可以使用objcString来表示相应的字符串了。 另外,如果需要在Objective-C中频繁使用C++的字符串操作,可以考虑将整个文件的后缀名改为.mm,这样文件就会被当做Objective-C++文件处理,这样就可以使用std::string了。 总之,Objective-C中无法直接使用std::string,但可以通过将其转换为NSString来使用。 ### 回答3: 在 Objective-C使用 std::string 可能会导致编译错误。这是因为 std::string 是 C++ 标准库中的类,而 Objective-C 是基于 C 的编程语言。虽然 Objective-C 允许使用 C++ 的一些特性,但不支持完全的 C++语法。 如果你在 Objective-C使用 std::string,并且遇到了编译错误,可能是因为编译器无法识别 std::string 这个类型。你可以尝试进行以下解决办法: 1. 使用 NSString 类型代替 std::string 类型。NSString 是 Objective-C 中用于处理字符串的类,可以满足大部分的字符串操作需求。 2. 将 std::string 转换为 NSString。可以使用 NSString 的 initWithCString:encoding: 方法将 std::string 转换为 NSString 对象,然后在 Objective-C 中进行操作。 3. 在 Objective-C++ 文件中使用 std::string。如果你的文件后缀为 .mm,那么这个文件实际上是 Objective-C++ 文件,支持 C++ 语法。在这种文件中,可以直接使用 std::string,而不会报错。 需要注意的是,在使用 std::string 时,还要考虑到 Objective-C 的内存管理机制。如果使用了 std::string,可能需要手动管理内存的释放和分配,以避免内存泄漏等问题。 总而言之,当在 Objective-C 中出现 std::string 报错时,可以尝试使用 NSString 类型代替,转换为 NSString 对象,或者将文件后缀改为 .mm 来解决问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值