关于此方法返回值的苹果文档说:
返回值
URL 请求的 URL 连接。如果无法初始化连接,则返回 nil。
这可能会误导那些不熟悉 Cocoa(和 Objective-C)最佳实践的人。
通常一个init
方法应该返回一个对象;除非有一些根本原因返回一个对象是危险的。大多数其他语言通过抛出异常来处理这种情况,需要您添加无数的 try/catch 括号。
如果(例如)您将 a作为请求参数传递,该initWithRequest:delegate:
方法将返回;并且有充分的理由。为什么创建一个连接对象没有任何用处?nil
nil
但是,让我们考虑飞行模式或无效 url 之类的情况。如果initWithRequest:delegate:
刚刚返回nil
,那么您怎么知道出了什么问题?允许连接调用connection:didFailWithError:
使您有机会通过错误参数深入了解特定的失败。
要解决您关于是否有nil
必要处理连接事件的问题:这取决于。如果连接初始化失败,它将永远不会调用连接委托方法,因此如果您的代码依赖这些回调来发出后续请求,那么是的,这是必要的。
附注:创建您的NSMutableData
此处有点为时过早,因为您还不知道存在有效的连接。我在这里给出的答案给出了一些关于在哪里执行此操作的非常基本的示例代码。