我正在通过NSURLConnectionDelegate
apple.developer.com 网站上的类参考。在那里,我意识到一些功能,例如connectionDidFinishLoading
IOS 类中不存在,但在 MAC 库中存在。
然后,当我尝试在 XCODE 中为 IOS 应用程序使用这些功能时,自动完成功能无法完成,但功能确实按预期工作。
谁能解释一下这些是如何工作的,这会在部署应用程序时引起任何问题吗?谢谢!!
我正在通过NSURLConnectionDelegate
apple.developer.com 网站上的类参考。在那里,我意识到一些功能,例如connectionDidFinishLoading
IOS 类中不存在,但在 MAC 库中存在。
然后,当我尝试在 XCODE 中为 IOS 应用程序使用这些功能时,自动完成功能无法完成,但功能确实按预期工作。
谁能解释一下这些是如何工作的,这会在部署应用程序时引起任何问题吗?谢谢!!
这有点奇怪。的文档NSURLConnectionDelegate
说:
NSURLConnectionDelegate 协议定义了由 NSURLConnection 对象的委托实现的可选方法。
操作词是可选的。
但是,NSURLConnection
类参考说:
NSURLConnection 的委托方法——由 NSURLConnectionDelegate 协议定义——允许对象接收关于 URL 请求异步加载的信息回调。其他委托方法提供允许委托自定义执行异步 URL 加载过程的工具。在为关联的 NSURLConnection 对象启动异步加载操作的线程上调用这些委托方法。
这两个人似乎自相矛盾。
最后,“URL 加载系统编程指南”说:
为了下载 URL 的内容,应用程序需要提供一个委托对象,该对象至少实现以下委托方法:connection:didReceiveResponse:、connection:didReceiveData:、connection:didFailWithError: 和 connectionDidFinishLoading:。
这是你所期望的,因为NSURLConnection
没有这些委托方法几乎没有用。
查看头文件NSURLConnection
似乎有一个NSURLConnectionDataDelegate
协议列出了所需的委托方法。但是,它们被标记为@optional
在标题中。根据定义NSURLConnectionDataDelegate
它必须实现NSURLConnectionDelegate
。
如果你声明你的委托类来实现NSURLConnectionDataDelegate
协议,Xcode 将自动完成委托方法。
这一切让我觉得有点乱。Cocoa/Cocoa Touch API 通常比这更简洁。
我当然不认为 Apple 可以拒绝使用这些委托方法的应用程序,因为NSURLConnection
没有它们真的无法工作。
请记住,如果您发现 API 不一致,您需要向RADAR提交错误报告,正如 Black Pixel 的友好人员所解释的那样:RADAR 或 GTFO