/
automatically-generates-annotation-documents.html
609 lines (492 loc) · 36 KB
/
automatically-generates-annotation-documents.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width">
<meta name="theme-color" content="#222"><meta name="generator" content="Hexo 6.3.0">
<link rel="apple-touch-icon" sizes="180x180" href="/favicon.ico">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon.ico">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon.ico">
<link rel="mask-icon" href="/favicon.ico" color="#222">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="https://fonts.loli.net/css?family=Lato:300,300italic,400,400italic,700,700italic%7CZCOOL+QingKe+HuangYou:300,300italic,400,400italic,700,700italic&display=swap&subset=latin,latin-ext">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha256-DfWjNxDkM94fVBWx1H5BMMp0Zq7luBlV8QRcSES7s+0=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.1.1/animate.min.css" integrity="sha256-PR7ttpcvz8qrF57fur/yAx1qXMFJeJFiA6pSzWi0OIE=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css" integrity="sha256-Vzbj7sDDS/woiFS3uNKo8eIuni59rjyNGtXfstRzStA=" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/themes/blue/pace-theme-bounce.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/pace/1.2.4/pace.min.js" integrity="sha256-gqd7YTjg/BtfqWSwsJOvndl0Bxc8gFImLEkXQT8+qj0=" crossorigin="anonymous"></script>
<script class="next-config" data-name="main" type="application/json">{"hostname":"www.kaaaaai.cn","root":"/","images":"/images","scheme":"Gemini","darkmode":false,"version":"8.12.1","exturl":false,"sidebar":{"position":"left","display":"post","padding":18,"offset":12},"copycode":{"enable":true,"style":"mac"},"bookmark":{"enable":false,"color":"#222","save":"auto"},"mediumzoom":false,"lazyload":true,"pangu":false,"comments":{"style":"tabs","active":"valine","storage":true,"lazyload":true,"nav":null},"stickytabs":false,"motion":{"enable":true,"async":false,"transition":{"post_block":"fadeIn","post_header":"fadeInDown","post_body":"fadeInDown","coll_header":"fadeInLeft","sidebar":"fadeInUp"}},"prism":false,"i18n":{"placeholder":"搜索...","empty":"没有找到任何搜索结果:${query}","hits_time":"找到 ${hits} 个搜索结果(用时 ${time} 毫秒)","hits":"找到 ${hits} 个搜索结果"},"path":"/search.xml","localsearch":{"enable":true,"trigger":"auto","top_n_per_article":1,"unescape":false,"preload":false}}</script><script src="/js/config.js"></script>
<meta name="description" content="介绍自动生成注释文档有三种方式:">
<meta property="og:type" content="article">
<meta property="og:title" content="iOS - Xcode 自动生成注释文档">
<meta property="og:url" content="https://www.kaaaaai.cn/automatically-generates-annotation-documents.html">
<meta property="og:site_name" content="壹拾肆">
<meta property="og:description" content="介绍自动生成注释文档有三种方式:">
<meta property="og:locale" content="zh_CN">
<meta property="og:image" content="https://s2.ax1x.com/2019/07/26/enQnXj.jpg">
<meta property="article:published_time" content="2019-07-26T09:24:52.000Z">
<meta property="article:modified_time" content="2020-11-22T01:35:35.000Z">
<meta property="article:author" content="Kaaaaai">
<meta property="article:tag" content="EXP">
<meta property="article:tag" content="iOS">
<meta property="article:tag" content="Swift">
<meta property="article:tag" content="Xcode">
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://s2.ax1x.com/2019/07/26/enQnXj.jpg">
<link rel="canonical" href="https://www.kaaaaai.cn/automatically-generates-annotation-documents.html">
<script class="next-config" data-name="page" type="application/json">{"sidebar":"","isHome":false,"isPost":true,"lang":"zh-CN","comments":true,"permalink":"https://www.kaaaaai.cn/automatically-generates-annotation-documents.html","path":"/automatically-generates-annotation-documents.html","title":"iOS - Xcode 自动生成注释文档"}</script>
<script class="next-config" data-name="calendar" type="application/json">""</script>
<title>iOS - Xcode 自动生成注释文档 | 壹拾肆</title>
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-102185873-1"></script>
<script class="next-config" data-name="google_analytics" type="application/json">{"tracking_id":"UA-102185873-1","only_pageview":false}</script>
<script src="/js/third-party/analytics/google-analytics.js"></script>
<script src="/js/third-party/analytics/baidu-analytics.js"></script>
<script async src="https://hm.baidu.com/hm.js?9578d14210d67becef48447e4f6b3f20"></script>
<link rel="dns-prefetch" href="https://waline-server-kaaaaai.vercel.app"> <script type="text/javascript" src="/js/link-highlight.js"></script>
<noscript>
<link rel="stylesheet" href="/css/noscript.css">
</noscript>
<link rel="alternate" href="/atom.xml" title="壹拾肆" type="application/atom+xml">
</head>
<body itemscope itemtype="http://schema.org/WebPage" class="use-motion">
<div class="headband"></div>
<main class="main">
<header class="header" itemscope itemtype="http://schema.org/WPHeader">
<div class="header-inner"><div class="site-brand-container">
<div class="site-nav-toggle">
<div class="toggle" aria-label="切换导航栏" role="button">
<span class="toggle-line"></span>
<span class="toggle-line"></span>
<span class="toggle-line"></span>
</div>
</div>
<div class="site-meta">
<a href="/" class="brand" rel="start">
<i class="logo-line"></i>
<p class="site-title">壹拾肆</p>
<i class="logo-line"></i>
</a>
<p class="site-subtitle" itemprop="description">有些安排是多余的 这片空旷对我有益</p>
</div>
<div class="site-nav-right">
<div class="toggle popup-trigger">
<i class="fa fa-search fa-fw fa-lg"></i>
</div>
</div>
</div>
<nav class="site-nav">
<ul class="main-menu menu"><li class="menu-item menu-item-home"><a href="/" rel="section"><i class="fa fa-home fa-fw"></i>首页</a></li><li class="menu-item menu-item-moments"><a href="/bb/" rel="section"><i class="fa fa-coffee fa-fw"></i>碎片</a></li><li class="menu-item menu-item-categories"><a href="/categories/" rel="section"><i class="fa fa-th fa-fw"></i>分类</a></li><li class="menu-item menu-item-tags"><a href="/tags/" rel="section"><i class="fa fa-tags fa-fw"></i>标签</a></li><li class="menu-item menu-item-archives"><a href="/archives/" rel="section"><i class="fa fa-archive fa-fw"></i>归档</a></li><li class="menu-item menu-item-about"><a href="/about/" rel="section"><i class="fa fa-user fa-fw"></i>关于</a></li>
<li class="menu-item menu-item-search">
<a role="button" class="popup-trigger"><i class="fa fa-search fa-fw"></i>搜索
</a>
</li>
</ul>
</nav>
<div class="search-pop-overlay">
<div class="popup search-popup"><div class="search-header">
<span class="search-icon">
<i class="fa fa-search"></i>
</span>
<div class="search-input-container">
<input autocomplete="off" autocapitalize="off" maxlength="80"
placeholder="搜索..." spellcheck="false"
type="search" class="search-input">
</div>
<span class="popup-btn-close" role="button">
<i class="fa fa-times-circle"></i>
</span>
</div>
<div class="search-result-container no-result">
<div class="search-result-icon">
<i class="fa fa-spinner fa-pulse fa-5x"></i>
</div>
</div>
</div>
</div>
</div>
<div class="toggle sidebar-toggle" role="button">
<span class="toggle-line"></span>
<span class="toggle-line"></span>
<span class="toggle-line"></span>
</div>
<aside class="sidebar">
<div class="sidebar-inner sidebar-nav-active sidebar-toc-active">
<ul class="sidebar-nav">
<li class="sidebar-nav-toc">
文章目录
</li>
<li class="sidebar-nav-overview">
站点概览
</li>
</ul>
<div class="sidebar-panel-container">
<!--noindex-->
<div class="post-toc-wrap sidebar-panel">
<div class="post-toc animated"><ol class="nav"><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BB%8B%E7%BB%8D"><span class="nav-number">1.</span> <span class="nav-text">介绍</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#appledoc-%E7%9A%84%E5%AE%89%E8%A3%85"><span class="nav-number">2.</span> <span class="nav-text">appledoc 的安装</span></a></li><li class="nav-item nav-level-2"><a class="nav-link" href="#%E4%BD%BF%E7%94%A8"><span class="nav-number">3.</span> <span class="nav-text">使用</span></a></li></ol></div>
</div>
<!--/noindex-->
<div class="site-overview-wrap sidebar-panel">
<div class="site-author site-overview-item animated" itemprop="author" itemscope itemtype="http://schema.org/Person">
<img class="site-author-image" itemprop="image" alt="Kaaaaai"
src="https://s2.loli.net/2022/03/29/GSJKrCRi4owa9hq.png">
<p class="site-author-name" itemprop="name">Kaaaaai</p>
<div class="site-description" itemprop="description">🐨🐨</div>
</div>
<div class="site-state-wrap site-overview-item animated">
<nav class="site-state">
<div class="site-state-item site-state-posts">
<a href="/archives/">
<span class="site-state-item-count">98</span>
<span class="site-state-item-name">日志</span>
</a>
</div>
<div class="site-state-item site-state-categories">
<a href="/categories/">
<span class="site-state-item-count">7</span>
<span class="site-state-item-name">分类</span></a>
</div>
<div class="site-state-item site-state-tags">
<a href="/tags/">
<span class="site-state-item-count">66</span>
<span class="site-state-item-name">标签</span></a>
</div>
</nav>
</div>
<div class="sidebar-button site-overview-item animated">
<button><i class="fa fa-comment"></i>
Chat
</button>
</div>
<div class="links-of-author site-overview-item animated">
<span class="links-of-author-item">
<a href="https://github.com/Kaaaaai" title="GitHub → https://github.com/Kaaaaai" rel="noopener" target="_blank"><i class="fab fa-github fa-fw"></i>GitHub</a>
</span>
<span class="links-of-author-item">
<a href="https://stackoverflow.com/users/8342030/kaaaaai" title="StackOverflow → https://stackoverflow.com/users/8342030/kaaaaai" rel="noopener" target="_blank"><i class="fab fa-stack-overflow fa-fw"></i>StackOverflow</a>
</span>
<span class="links-of-author-item">
<a href="https://www.instagram.com/edisonlllllk" title="Instagram → https://www.instagram.com/edisonlllllk" rel="noopener" target="_blank"><i class="fab fa-instagram fa-fw"></i>Instagram</a>
</span>
<span class="links-of-author-item">
<a href="mailto:root@kaaaaai.cn" title="E-Mail → mailto:root@kaaaaai.cn" rel="noopener" target="_blank"><i class="fa fa-envelope fa-fw"></i>E-Mail</a>
</span>
</div>
</div>
</div>
<!-- 网易云歌曲 -->
<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=330 height=86 src="//music.163.com/outchain/player?type=2&id=421203025&auto=1&height=66"></iframe>
<div class="back-to-top animated" role="button" aria-label="返回顶部">
<i class="fa fa-arrow-up"></i>
<span>0%</span>
</div>
</div>
</aside>
<div class="sidebar-dimmer"></div>
</header>
<noscript>
<div class="noscript-warning">Theme NexT works best with JavaScript enabled</div>
</noscript>
<div class="main-inner post posts-expand">
<div class="post-block">
<article itemscope itemtype="http://schema.org/Article" class="post-content" lang="zh-CN">
<link itemprop="mainEntityOfPage" href="https://www.kaaaaai.cn/automatically-generates-annotation-documents.html">
<span hidden itemprop="author" itemscope itemtype="http://schema.org/Person">
<meta itemprop="image" content="https://s2.loli.net/2022/03/29/GSJKrCRi4owa9hq.png">
<meta itemprop="name" content="Kaaaaai">
</span>
<span hidden itemprop="publisher" itemscope itemtype="http://schema.org/Organization">
<meta itemprop="name" content="壹拾肆">
<meta itemprop="description" content="🐨🐨">
</span>
<span hidden itemprop="post" itemscope itemtype="http://schema.org/CreativeWork">
<meta itemprop="name" content="iOS - Xcode 自动生成注释文档 | 壹拾肆">
<meta itemprop="description" content="">
</span>
<header class="post-header">
<h1 class="post-title" itemprop="name headline">
iOS - Xcode 自动生成注释文档
</h1>
<div class="post-meta-container">
<div class="post-meta">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-calendar"></i>
</span>
<span class="post-meta-item-text">发表于</span>
<time title="创建时间:2019-07-26 17:24:52" itemprop="dateCreated datePublished" datetime="2019-07-26T17:24:52+08:00">2019-07-26</time>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-folder"></i>
</span>
<span class="post-meta-item-text">分类于</span>
<span itemprop="about" itemscope itemtype="http://schema.org/Thing">
<a href="/categories/%E7%AC%94%E8%AE%B0/" itemprop="url" rel="index"><span itemprop="name">笔记</span></a>
</span>
</span>
<span class="post-meta-item" title="阅读次数" id="busuanzi_container_page_pv">
<span class="post-meta-item-icon">
<i class="far fa-eye"></i>
</span>
<span class="post-meta-item-text">阅读次数:</span>
<span id="busuanzi_value_page_pv"></span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="far fa-comment"></i>
</span>
<span class="post-meta-item-text">Waline:</span>
<a title="waline" href="/automatically-generates-annotation-documents.html#waline" itemprop="discussionUrl">
<span class="post-comments-count waline-comment-count" data-path="/automatically-generates-annotation-documents.html" itemprop="commentCount"></span>
</a>
</span>
<span class="post-meta-break"></span>
<span class="post-meta-item" title="本文字数">
<span class="post-meta-item-icon">
<i class="far fa-file-word"></i>
</span>
<span class="post-meta-item-text">本文字数:</span>
<span>2.7k</span>
</span>
<span class="post-meta-item" title="阅读时长">
<span class="post-meta-item-icon">
<i class="far fa-clock"></i>
</span>
<span class="post-meta-item-text">阅读时长 ≈</span>
<span>2 分钟</span>
</span>
</div>
</div>
</header>
<div class="post-body" itemprop="articleBody">
<h2 id="介绍"><a href="#介绍" class="headerlink" title="介绍"></a>介绍</h2><p>自动生成注释文档有三种方式:</p>
<ul>
<li><a target="_blank" rel="noopener" href="http://www.stack.nl/~dimitri/doxygen/index.html">docxygen</a></li>
<li><a target="_blank" rel="noopener" href="http://developer.apple.com/opensource/tools/headerdoc.html">headdoc</a></li>
<li><a target="_blank" rel="noopener" href="http://gentlebytes.com/appledoc/">appledoc</a></li>
</ul>
<p><strong>docxygen</strong><br>docxygen 感觉是这 3 个工具中支持语言最多的,可以配置的地方也比较多。我大概看了一下文档,觉得还是比较复杂,而且默认生成的风格与苹果的风格不一致。就去看后面 2 个工具的介绍了。另外,它虽然是开源软件,但是没有将源码放到 github 上让我感觉这个工具的开发活跃度是不是不够。</p>
<p><strong>headerdoc</strong><br>headerdoc 是 xcode 自带的文档生成工具。在安装完 xcode 后,就可以用命令行:headdoc2html + 源文件名 来生成对应的文档。我个人试用了一下,还是比较方便的,不过headerdoc的注释生成规则比较特别,只生成以 /*! */ 的格式的注释。还有一个缺点是每个类文件对应一个注释文件,没有汇总的文件,这点感觉有点不爽。</p>
<p><strong>appledoc</strong><br>appledoc 是在 stackoverflow 上被大家推荐的一个注释工具。比起以上两个工具,他的优点有:<br>它默认生成的文档风格和苹果的官方文档是一致的,而 doxygen 需要另外配置。<br>appledoc 就是用 objective-c 生成的,必要的时候调试和改动也比较方便。<br>可以生成 docset,并且集成到 xcode 中。这一点是很赞的,相当于在源码中按住 option 再单击就可以调出相应方法的帮助。<br>appledoc 源码在 github 上,而 doxygen 在 svn 上。我个人比较偏激地认为比较活跃的开源项目都应该在 github 上。<br>相对于 headerdoc,它没有特殊的注释要求,可以用/** <em>/ 的格式,也可以兼容/</em>! */的格式的注释,并且生成的注释有汇总页面。</p>
<h2 id="appledoc-的安装"><a href="#appledoc-的安装" class="headerlink" title="appledoc 的安装"></a>appledoc 的安装</h2><p>那么简单介绍一下如何安装 appledoc,安装非常简单,只需要 2 步:</p>
<figure class="highlight bash"><figcaption><span>Terminal</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git <span class="built_in">clone</span> git://github.com/tomaz/appledoc.git</span><br><span class="line"><span class="built_in">cd</span> appledoc</span><br><span class="line">sudo sh install-appledoc.sh</span><br></pre></td></tr></table></figure>
<p>当出现 INSTALL SUCCEEDED 时说明成功了,你也可以用 appledoc –version 查看验证下。如果可以正常执行下面指令则证明安装成功,否则需要查看报错说明。</p>
<figure class="highlight bash"><figcaption><span>Terminal</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 查看版本号</span></span><br><span class="line">$ appledoc --version</span><br><span class="line"><span class="comment"># 查看更多文档信息</span></span><br><span class="line">$ appledoc --<span class="built_in">help</span></span><br></pre></td></tr></table></figure>
<p><img data-src="/images/loading-style-3.gif" data-original="https://s2.ax1x.com/2019/07/26/enQnXj.jpg"></p>
<h2 id="使用"><a href="#使用" class="headerlink" title="使用"></a>使用</h2><p>1、使用终端进入代码目录<br>直接拖拽我们的工程文件夹到终端,然后按回车键<br>或者使用 cd+”项目名字目录”,然后按回车键<br>以上两种方法都可以进入到我们的工程根目录<br>2、指令用法及参数说明</p>
<figure class="highlight bash"><figcaption><span>Terminal</span></figcaption><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 参考指令写法1(不生成docset文件)</span></span><br><span class="line">$ appledoc --no-create-docset --output ./doc --project-name <span class="string">"QQ"</span> --company-id <span class="string">"com.tencent.QQ"</span> --project-company <span class="string">"Tencent Inc."</span> /Users/superdanny/Desktop/QQ-Project/QQ/Views</span><br><span class="line"><span class="comment"># 参考指令写法2(不生成docset文件,参数使用“=”等号写法)</span></span><br><span class="line">$ appledoc --no-create-docset --output=<span class="string">"./doc"</span> --project-name=<span class="string">"QQ"</span> --company-id=<span class="string">"com.tencent.QQ"</span> --project-company=<span class="string">"Tencent Inc."</span> /Users/superdanny/Desktop/QQ-Project/QQ/Views</span><br><span class="line"><span class="comment"># 参考指令写法3(生成docset文件并指定生成路径)</span></span><br><span class="line">$ appledoc --output ./doc --project-name <span class="string">"QQ"</span> --company-id <span class="string">"com.tencent.QQ"</span> --project-company <span class="string">"Tencent Inc."</span> /Users/superdanny/Desktop/QQ-Project/QQ/Views --docset-install-path ./doc</span><br><span class="line"><span class="comment"># 以上都是扫描指定目录下的文件,如果想扫描当前目录所有文件,只需要将指定目录换成"."即可</span></span><br><span class="line">$ appledoc --no-create-docset --output=<span class="string">"./doc"</span> --project-name=<span class="string">"QQ"</span> --company-id=<span class="string">"com.tencent.QQ"</span> --project-company=<span class="string">"Tencent Inc."</span> .</span><br></pre></td></tr></table></figure>
<p><strong>参数说明</strong></p>
<table>
<thead>
<tr>
<th align="center">参数</th>
<th align="center">说明</th>
</tr>
</thead>
<tbody><tr>
<td align="center">–no-create-docset</td>
<td align="center">(选填参数)只生成html,不生成docset文件。如果需要生成,则去掉该参数即可</td>
</tr>
<tr>
<td align="center">–output</td>
<td align="center">(必填参数)生成结果输出路径,如“./doc”,会在工程目录下创建一个doc文件夹存放生成的文档。当然你可以指定一个完整的目录路径存放生成的文档</td>
</tr>
<tr>
<td align="center">–project-name</td>
<td align="center">(必填参数)工程名字,如“QQ”</td>
</tr>
<tr>
<td align="center">–project-company</td>
<td align="center">(必填参数)公司名字,如“Tencent Inc.”</td>
</tr>
<tr>
<td align="center">–company-id</td>
<td align="center">(选填参数)公司ID,如“com.tencent.QQ”,会生成文件名为companyID.projectName.docset的docset文件。如果不设置,则文件名为com.companyname.projectname.projectName.docset</td>
</tr>
<tr>
<td align="center">–docset-install-path</td>
<td align="center">(选填参数)生成docset文件的目录。如果此目录不设置,默认会在~/Library/Developer/Shared/Documentation/DocSets/目录生成</td>
</tr>
<tr>
<td align="center">/Users/superdanny/Desktop/QQ-Project/QQ/Views</td>
<td align="center">扫描对应路径下的类,如果想扫描当前目录所有文件,则将此路径换成.即可</td>
</tr>
</tbody></table>
<p>如果是生成 docset 文件,则 <code>--output</code> 参数对应的目录会生成一个 docset-installed.txt 文件,里面记录 docset 存放的目录。<br>如果是不生成 docset 文件,则 <code>--output</code> 参数对应的目录会生成html文件。直接打开 index.html 文件即可查看。</p>
</div>
<div class="popular-posts-header">相关文章</div>
<ul class="popular-posts">
<li class="popular-posts-item">
<div class="popular-posts-date">2019-07-17</div>
<div class="popular-posts-title"><a href="/xcode-plugin-research.html" rel="bookmark">iOS - Xcode Plugin 调研和使用</a></div>
<div class="popular-posts-excerpt"><p><p> Xcode 升级到 8.x 以上版本后为了提升安全性, 防止 <code>XcodeGhost</code> 事件的发生, 添加了代码签名机制, 所以以往我们那些用的很顺手的 Xcode 插件一下子统统都被打入冷宫。这种情况下,我们想要重新使用插件,我们应该怎么做呢?<br> 首先我们要使用插件第一步是给 Xcode 重新签名, 在签名前建议备份一个纯净 Xcode 做 App 打包发布用(应用程序目录下复制一个即可)。</p>
<h3 id="一、Xcode-重签名以使用插件"><a href="#一、Xcode-重签名以使用插件" class="headerlink" title="一、Xcode 重签名以使用插件"></a>一、Xcode 重签名以使用插件</h3></p></div>
</li>
<li class="popular-posts-item">
<div class="popular-posts-date">2019-05-11</div>
<div class="popular-posts-title"><a href="/weekly-summary-190511.html" rel="bookmark">每周总结 - 0511</a></div>
<div class="popular-posts-excerpt"><p><p> 项目最后的交接工作,我被派到了中移动总部进行封闭开发,暂时作为 iOS 方面的项目管理和推进,就之前来说,这个礼拜我负责的内容多了一些,除了我本身的代码维护以外,对外要处理项目的交接工作,对内要分配测试人员测试出的 bug,和一些缺失内容,优化内容的推进。一个礼拜下来,有一些收获。<br> 之前看知乎上一个问题,是有什么是当上管理层才会想的事?虽然我还没有到那个地步,但是管理项目给我的一些体验让我觉得似乎可以把握到一些管理层的想法,比如很多时候我们觉得领导只看结果不问过程有点不可理喻,但是从另一方面来看这其实只是因为需要对接的内容太多,不问过程只看结果,可以最大程度的排除其他因素的干扰。另一个是就是个人的主观动能性,这阵子做项目管理的时候,我总是会因为分配下去的任务而收到关于很多任务的疑问,比如新增一项需求的时候,开发人员会询问关于这个功能在不同场景下需要表现成怎样,在一些无法实现的地方又应该怎样规避。在管理角度看,这些当然是合理的,但提问的时机太零碎了,容易被分散注意力,另一个是有些场景虽然没有给出标准,但其实可以横向参考其他类似的功能来实现需求,这时候提问并不是必要的,所缺乏的只是一点主动去思考,或者说是虽然想到了第一步,即会产生这个问题,但可能是某种局限导致开发人员没有往下一步怎么解决这个问题,我之前也存在过类似问题。切成开发人员角度,规避这些问题,一个是整理问题,统一解决,另一个是解决问题的方法,虽然可以思考怎么解决,但是如果解决方法最终没有通过产品的审核,那之前针对问题的解决也都白费劲,所以最好的应对方法是,发现问题,可以附上一条或两条解决方案,一并提交。我想这些经验对于以后我做个人开发或者管理都会有帮助。<br> 这个礼拜接触到的新技术是使用 OC/Swift 自动生成文档的轮子:</p>
<blockquote>
<p> OC 自动生成代码文档:<a target="_blank" rel="noopener" href="https://blog.csdn.net/u011374880/article/details/82143782">appledoc</a><br> swift 自动生成代码文档:<a target="_blank" rel="noopener" href="https://www.jianshu.com/p/b0d77877bafe">jazzy</a></p>
</blockquote></p></div>
</li>
</ul>
<footer class="post-footer">
<div class="reward-container">
<div></div>
<button>
请喝咖啡
</button>
<div class="post-reward">
<div>
<img src="/images/loading-style-3.gif" data-original="https://s2.loli.net/2022/07/02/Gce8a5QAqrZ3X9R.gif" alt="Kaaaaai 微信">
<span>微信</span>
</div>
</div>
</div>
<div class="post-copyright">
<ul>
<li class="post-copyright-author">
<strong>本文作者: </strong>Kaaaaai
</li>
<li class="post-copyright-link">
<strong>本文链接:</strong>
<a href="https://www.kaaaaai.cn/automatically-generates-annotation-documents.html" title="iOS - Xcode 自动生成注释文档">https://www.kaaaaai.cn/automatically-generates-annotation-documents.html</a>
</li>
<li class="post-copyright-license">
<strong>版权声明: </strong>本博客所有文章除特别声明外,均采用 <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/" rel="noopener" target="_blank"><i class="fab fa-fw fa-creative-commons"></i>BY-NC-SA</a> 许可协议。转载请注明出处!
</li>
</ul>
</div>
<div class="post-tags">
<a href="/tags/EXP/" rel="tag"><i class="fa fa-tag"></i> EXP</a>
<a href="/tags/iOS/" rel="tag"><i class="fa fa-tag"></i> iOS</a>
<a href="/tags/Swift/" rel="tag"><i class="fa fa-tag"></i> Swift</a>
<a href="/tags/Xcode/" rel="tag"><i class="fa fa-tag"></i> Xcode</a>
</div>
<div class="post-nav">
<div class="post-nav-item">
<a href="/weekly-summary-190722.html" rel="prev" title="每周总结 - 0722">
<i class="fa fa-chevron-left"></i> 每周总结 - 0722
</a>
</div>
<div class="post-nav-item">
<a href="/weekly-summary-190729.html" rel="next" title="每周总结 - 0729">
每周总结 - 0729 <i class="fa fa-chevron-right"></i>
</a>
</div>
</div>
</footer>
</article>
</div>
<div class="comments" id="waline"></div>
</div>
</main>
<footer class="footer">
<div class="footer-inner">
<div class="copyright">
©
<span itemprop="copyrightYear">2024</span>
<span class="with-love">
<i class="fa fa-heart"></i>
</span>
<span class="author" itemprop="copyrightHolder">Kaaaaai</span>
</div>
<div class="wordcount">
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-chart-line"></i>
</span>
<span title="站点总字数">232k</span>
</span>
<span class="post-meta-item">
<span class="post-meta-item-icon">
<i class="fa fa-coffee"></i>
</span>
<span title="站点阅读时长">3:30</span>
</span>
</div>
<div class="busuanzi-count">
<span class="post-meta-item" id="busuanzi_container_site_uv">
<span class="post-meta-item-icon">
<i class="fa fa-user"></i>
</span>
<span class="site-uv" title="总访客量">
<span id="busuanzi_value_site_uv"></span>
</span>
</span>
<span class="post-meta-item" id="busuanzi_container_site_pv">
<span class="post-meta-item-icon">
<i class="fa fa-eye"></i>
</span>
<span class="site-pv" title="总访问量">
<span id="busuanzi_value_site_pv"></span>
</span>
</span>
</div>
<!-- time -->
<div id="show-time">
<span id="span_dt_dt"></span>
</div>
<script>
function show_date_time() {
window.setTimeout("show_date_time()", 1000);
BirthDay = new Date("6/23/2017 19:37:01");
today = new Date();
//总时间
timeold = (today.getTime() - BirthDay.getTime());
sectimeold = timeold / 1000
secondsold = Math.floor(sectimeold);
msPerDay = 24 * 60 * 60 * 1000
e_daysold = timeold / msPerDay
daysold = Math.floor(e_daysold);
e_hrsold = (e_daysold - daysold) * 24;
hrsold = Math.floor(e_hrsold);
e_minsold = (e_hrsold - hrsold) * 60;
minsold = Math.floor((e_hrsold - hrsold) * 60);
seconds = Math.floor((e_minsold - minsold) * 60);
span_dt_dt.innerHTML = "已存活 " + daysold + " 天 " + hrsold + " 小时 " + minsold + " 分 " + seconds + " 秒";
}
show_date_time();
</script>
</div>
</footer>
<script src="https://cdnjs.cloudflare.com/ajax/libs/animejs/3.2.1/anime.min.js" integrity="sha256-XL2inqUJaslATFnHdJOi9GfQ60on8Wx1C2H8DYiN1xY=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/next-theme-pjax/0.5.0/pjax.min.js" integrity="sha256-3NkoLDrmHLTYj7csHIZSr0MHAFTXth7Ua/DDt4MRUAg=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js" integrity="sha256-yt2kYMy0w8AbtF89WXb2P1rfjcP/HTHLT7097U8Y5b8=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lozad.js/1.16.0/lozad.min.js" integrity="sha256-mOFREFhqmHeQbXpK2lp4nA3qooVgACfh88fpJftLBbc=" crossorigin="anonymous"></script>
<script src="/js/comments.js"></script><script src="/js/utils.js"></script><script src="/js/motion.js"></script><script src="/js/next-boot.js"></script><script src="/js/pjax.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/hexo-generator-searchdb/1.4.0/search.js" integrity="sha256-vXZMYLEqsROAXkEw93GGIvaB2ab+QW6w3+1ahD9nXXA=" crossorigin="anonymous"></script>
<script src="/js/third-party/search/local-search.js"></script>
<script class="next-config" data-name="chatra" type="application/json">{"enable":true,"async":true,"id":"QXLRxXcsfrRJR2KTG"}</script>
<script src="/js/third-party/chat/chatra.js"></script>
<script async src="https://call.chatra.io/chatra.js"></script>
<script src="/js/third-party/fancybox.js"></script>
<script src="/js/third-party/pace.js"></script>
<script data-pjax async src="https://busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script>
<script class="next-config" data-name="waline" type="application/json">{"lang":"zh-cn","enable":true,"serverURL":"https://waline-server-kaaaaai.vercel.app","cssUrl":"https://unpkg.com/@waline/client@v2/dist/waline.css","commentCount":true,"pageview":false,"placeholder":"请文明评论呀","avatar":"mm","meta":["nick","mail","link"],"pageSize":10,"visitor":false,"comment_count":true,"requiredFields":[],"libUrl":"//unpkg.com/@waline/client@v2/dist/waline.js","el":"#waline","comment":true,"path":"/automatically-generates-annotation-documents.html"}</script>
<link rel="stylesheet" href="https://unpkg.com/@waline/client@v2/dist/waline.css">
<script>
document.addEventListener('page:loaded', () => {
NexT.utils.loadComments(CONFIG.waline.el).then(() =>
NexT.utils.getScript(CONFIG.waline.libUrl, { condition: window.Waline })
).then(() =>
Waline.init(Object.assign({}, CONFIG.waline,{ el: document.querySelector(CONFIG.waline.el) }))
);
});
</script>
<style>
[bg-lazy] {
background-image: none !important;
background-color: #eee !important;
}
</style>
<script>
window.imageLazyLoadSetting = {
isSPA: true,
preloadRatio: 1,
processImages: null,
};
</script><script>window.addEventListener("load",function(){var t=/\.(gif|jpg|jpeg|tiff|png)$/i,r=/^data:image\/[a-z]+;base64,/;Array.prototype.slice.call(document.querySelectorAll("img[data-original]")).forEach(function(a){var e=a.parentNode;"A"===e.tagName&&(e.href.match(t)||e.href.match(r))&&(e.href=a.dataset.original)})});</script><script>!function(r){r.imageLazyLoadSetting.processImages=t;var e=r.imageLazyLoadSetting.isSPA,n=r.imageLazyLoadSetting.preloadRatio||1,c=a();function a(){var t=Array.prototype.slice.call(document.querySelectorAll("img[data-original]")),e=Array.prototype.slice.call(document.querySelectorAll("[bg-lazy]"));return t.concat(e)}function t(){e&&(c=a());for(var t,o=0;o<c.length;o++)0<=(t=(t=c[o]).getBoundingClientRect()).bottom&&0<=t.left&&t.top<=(r.innerHeight*n||document.documentElement.clientHeight*n)&&function(){var t,e,n,a,i=c[o];e=function(){c=c.filter(function(t){return i!==t}),r.imageLazyLoadSetting.onImageLoaded&&r.imageLazyLoadSetting.onImageLoaded(i)},(t=i).hasAttribute("bg-lazy")?(t.removeAttribute("bg-lazy"),e&&e()):(n=new Image,a=t.getAttribute("data-original"),n.onload=function(){t.src=a,t.removeAttribute("data-original"),e&&e()},t.src!==a&&(n.src=a))}()}function i(){clearTimeout(t.tId),t.tId=setTimeout(t,500)}t(),document.addEventListener("scroll",i),r.addEventListener("resize",i),r.addEventListener("orientationchange",i)}(this);</script></body>
</html>