当前位置: 首页 > news >正文

DocC的简单使用

DocC的简单使用

在写3GShare中,由于刚开始使用MVC模式来写东西,对很多东西都不是很熟,经常写着写着就忘了自己在写什么,所以学了一下DocC来加快开发进度

什么是DocC

简单来说,DocC就是更高级的注释,虽然DocC 是专门为 Swift 代码写文档的工具,但是在OC中也是可以使用的,它可以将基于 Markdown 的文本转换为丰富的 Swift 框架和包文档

最重要的是,DocC 语法非常简单却很强大。不需要创建额外的文件或使用其他软件,一切都可以直接在 Xcode 中完成。

基础用法

最最简单的用法,把平时用的双斜杠注释换成三斜杠

完成了!

@interface loginAndRegisterModel : NSObject
/// 存储用户数据
@property (nonatomic, strong) NSMutableArray* usersInfo;
@end

写完这些注释后,你就可以在Xcode中按住 Option 键然后点击变量名,就能看到你写的文档了

CleanShot_2025-07-25_at_23.21.152x

当然方法也是同样的道理

/// 为第一个cell的滑动照片墙提供照片数组
- (NSArray*) providesImages;

CleanShot_2025-07-25_at_23.24.342x

添加更详细的说明

如果你想在解释说明中添加更多实现的细节,可以在第一段描述后空一行,然后继续写。这些内容会显示在帮助对话框的讨论部分

/// 保存按下按钮的状态
///
/// 把按钮的tag值存在对应节的数组中,方便之后查询
- (void)saveBtnPress:(NSInteger)tag andIndexPath:(NSIndexPath*)indexPath;

CleanShot_2025-07-26_at_15.32.022x

进阶用法:参数和返回值

描述参数

使用 - Parameters: 关键字可以描述函数的参数。注意破折号和冒号都是必需的,它们用作分隔符

但是在OC中似乎没有办法正常编译进去,这里使用swift演示一下

extension Array {/// 根据月份的日期返回一个随机元素,/// 该日期用于计算随机索引。////// stableRandom 函数在整个日期内始终返回相同的元素。/// 但是一旦日期发生变化,它的值就会改变。////// - Parameters:///     - date: 用于随机化算法的日期。func stableRandom(using date: Date = .now) throws -> Element {// 实现代码...}
}

image

描述返回值和错误

返回值和错误在oc中可以正常描述,语法与参数一样

/// 检测注册信息是否可用
///  - Returns:
///  0:注册成功
///  1:邮箱有重复
///  2:用户名有重复
///  - Throws: 返回nil
- (NSInteger) isValidRegister:(user*) users;

CleanShot_2025-07-26_at_16.04.222x

DocC 的实际应用场景

合作开发

在合作开发中,对每个方法做好DocC能大大提高开发效率,可以让每个人方便的知道你的方法是干什么的,会返回什么结果,可能会出现什么样的错误

自己回顾代码

由于笔者刚开始使用MVC模式来写项目,常常会在三个甚至六个不同的文件里来回穿梭,在学了DocC后,就方便了许多,回头看自己写的DocC 文档可以让我快速的回忆起方法的作用

写在最后

当然,这里的介绍只是我觉得常用的部分,Apple在DocC方面有详细的教程,DocC的作用也远不止这些,感兴趣的同学可以移步Apple Developer

https://developer.apple.com/cn/videos/play/wwdc2021/10166

http://www.lryc.cn/news/600772.html

相关文章:

  • ICMP报文工作原理
  • Linux如何执行系统调用及高效执行系统调用:深入浅出的解析
  • Python 数据分析(二):Matplotlib 绘图
  • 斐波那契数列加强版 快速矩阵幂
  • 特产|基于SSM+vue的南阳特产销售平台(源码+数据库+文档)
  • Linux 系统调用详解:操作文件的常用系统调用
  • SSE (Server-Sent Events) 服务出现连接卡在 pending 状态的原因
  • 2025微前端架构研究与实践方案
  • JavaScript里的string
  • 前端设计中如何在鼠标悬浮时同步修改块内样式
  • 【机器学习深度学习】LLamaFactory微调效果与vllm部署效果不一致如何解决
  • k8s的nodeport和ingress
  • 什么是JUC
  • Voxtral Mini:语音转文本工具,支持超长音频,多国语音
  • 9.3 快速傅里叶变换
  • Docker常用命令详解:以Nginx为例
  • gig-gitignore工具实战开发(五):gig add完善
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 热词评论查询功能实现
  • Spring Boot 单元测试进阶:JUnit5 + Mock测试与切片测试实战及覆盖率报告生成
  • Android ADB命令之内存统计与分析
  • Java学习|黑马笔记|Day23】网络编程、反射、动态代理
  • 深入理解C语言快速排序与自省排序(Introsort)
  • 安卓服务与多线程
  • 学习嵌入式的第三十天-数据结构-(2025.7.21)网络编程
  • 系统性学习C语言-第二十三讲-文件操作
  • 台式电脑有多个风扇开机只有部分转动的原因
  • Matlab自学笔记六十五:解方程的数值解法(代码速成)
  • Nacos-服务注册,服务发现(二)
  • 八股文整理——计算机网络
  • 容器化成本优化:K8s资源请求与限制的黄金法则——从资源画像分析到25%成本削减的实战指南