Xcode 6 文档可用性问题

Xcode 6 document availability issue

在Xcode6中,有些函数的文档声明该函数在iOS8及以后可用,但实际上在iOS8之前也存在该函数.

比如-[NSMutableURLRequest setHTTPBody]在Xcode6的文档是这样的:

但是在Xcode5中,是这样的:

这让我感到困惑,因为我只想使用 setHTTPBody 并确保它不会在 iOS 之前使我的应用程序崩溃 8. 在这种情况下,尽管 [= 的文档31=] 6 说是"iOS 8 only",其实不是,我的时间浪费在仔细检查它的可用性上。

有一段时间,每当我在Xcode6的文档中看到一些像这样的"iOS 8 only"函数时,我仍然要仔细检查,而且大多数时候它们存在于[=27之前=] 8. 那么我该如何克服这个问题呢?

从文档本身可以清楚地看到:

之前 iOS 8:

有一个自定义 setter 用于设置 HTTPBody 属性。 属性 本身是私有的。

- (void)setHTTPBody:(NSData *)data;

在iOS8:

HTTPBody 是 public 属性.

@property (copy) NSData *HTTPBody;

编译器为属性生成的二进制代码略有不同,因此这两行代码不同:

request.HTTPBody = foo;
[request setHTTPBody:foo];

差异很小,但如果您的应用在 iOS 7.

上运行,我会使用后者

至于你应该怎么做,请向 Apple 提交错误:https://developer.apple.com/bug-reporting/ — 请务必select 文档作为你报告错误的产品。