0

我有一些这样的代码注释:

/**
How to use this method.

@discussion To use it, do something like the following

    id hook = [[STDeallocHook alloc] initWithBlock:^{
        // Do something when 'hook' is dealloced
    }];
*/

所以代码示例缩进了 4 个空格。当我使用 appledoc 编译 docset 时,它会正确编译并将代码显示为我生成的 API 参考中的代码。但是回到 XCode(我有 appledoc 为 doco 中的问题创建警告的地方)我收到警告:

Invalid [[STDeallocHook alloc] reference found hear STDeallocHook.h@16, unknown object: [STDeallocHook !

我认为发生的事情是 appledoc 正在代码块内寻找降价链接。

如何阻止此警告出现?

4

1 回答 1

1

我也无法阻止它。看起来它自 2011 年以来一直是一个已知的错误,但它仍然被打破。

有趣的是,我并不是每件事都能得到它。在一个大型代码示例中,我只会得到其中的几个......仍然没有弄清楚它是如何决定让我悲伤的......

解决方法

[这可以解决警告,并且在生成的文档中看起来很好,但在纯文本中看起来像废话:用 HTML 转义码替换前导[

未来修复

据说,神话版本 3 已经解决了这个问题,但我找不到任何关于它的 ETA 的提及。2012 年 3 月有一个“ 3.0exp1 ”分支,2014 年 10 月有一个“3.0dev”分支。

如果你有时间和兴趣,也许你可以看看它是如何修复的并自己修补它(尽管从那时起代码库显然已经改变了很多)。

我的尝试

我对这个答案感到不满意,所以我回去查看源代码。第一次在该代码中。导航并不是很容易......并且没有记录任何类,我觉得这很奇怪,尤其是对于文档工具。

无论如何,我想我知道为什么我有时只会收到警告。解析器将所有下划线视为格式标记。因此,如果它在同一个文本“块”中找到它们中的两个,它会将它们拆分。由于我测试的代码具有类别文档,因此只有在每个“块”中遇到的最后一个导致警告......因为所有其他代码都被视为斜体......然后被忽略。

此外,如果它们被标记为...,我似乎可以强迫它跳过源代码块。

@code
[self wjh_doSomething];
@endcode

或者

```
[self wjh_doSomething];

```

或者

~~~
[self wjh_doSomething];
~~~

第一个在文档块中很常见,后两个在 Markdown 中很常见。

这是一个黑客,但它似乎工作。我发送了一个 PR,可以在这里找到。谁知道它是否会被接受,但如果您愿意,请随意尝试一下。

我想我至少会在本地使用它,因为它为我清除了大量警告......我可能会尝试重新生成所有记录在案的东西以启动。

编辑

好吧,我想我应该先去看看公开的 PR。似乎已经有一个公关人员处理同样的问题,自 5 月以来一直存在。它本来可以节省我的时间......但尝试一下它有点有趣;-)

您可能想使用那个……它似乎更简单。越简单越好,但我没有使用过那个,我不确定它是否完全忽略了这些块,但他似乎已经用他的补丁消除了警告。

那个不支持@code/@endcode,我很高兴拥有它。

于 2015-09-06T06:56:22.147 回答