Xcode 6文档可用性问题

时间:2015-01-26 02:51:42

标签: ios xcode

在Xcode 6中,某些函数的文档声明该函数的可用性是iOS 8及更高版本,但事实上该函数也存在于iOS 8之前。

例如,Xcode 6中-[NSMutableURLRequest setHTTPBody]的文档是这样的:enter image description here

但是,在Xcode 5中,它是这样的:enter image description here

这让我很困惑,因为我想要做的就是使用setHTTPBody并确保它不会在iOS 8之前崩溃我的应用程序。在这种情况下,虽然Xcode 6的文档说它是“iOS 8”只是“,实际上并非如此,我浪费时间仔细检查其可用性。

有一段时间,每当我在Xcode 6的文档中看到一些“iOS 8 only”这样的功能时,我仍然需要仔细检查,而且大部分时间它们都存在于iOS 8之前。那我怎么能克服这个问题

2 个答案:

答案 0 :(得分:2)

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

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

差异很微妙,但如果您的应用在iOS 7上运行,我会使用后者。

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

答案 1 :(得分:1)

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

在iOS 8之前:

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

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

在iOS 8中:

HTTPBody是公共财产。

@property (copy) NSData *HTTPBody;