如果NSURLSession#dataTaskWithRequest返回nil是什么意思?

时间:2015-07-19 21:52:45

标签: ios swift ios9

从iOS 9.0开始,NSURLSession#dataTaskWithRequest可能会返回NSURLSessionDataTask?,因为它始终返回NSURLSessionDataTask。 Swift迁移只是建议只添加!来强制解包任务。但这仍然让我想知道为什么要做出这种改变。如果返回nil,它实际上意味着什么?在什么条件下任务无法构建?在应用程序中处理这些错误的最佳方法是什么?

let task = NSURLSession.sharedSession().dataTaskWithRequest(request)
// Swift migrator suggests force unwrapping the optional
let task = NSURLSession.sharedSession().dataTaskWithRequest(request)!

iOS 8.3

- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request
- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler

iOS 9.0

- (NSURLSessionDataTask * nullable)dataTaskWithRequest:(NSURLRequest * nonnull)request
- (NSURLSessionDataTask * nullable)dataTaskWithRequest:(NSURLRequest * nonnull)request completionHandler:(void (^ nonnull)(NSData * nullable data, NSURLResponse * nullable response, NSError * nullable error))completionHandler

https://developer.apple.com/library/prerelease/ios/releasenotes/General/iOS90APIDiffs/frameworks/Foundation.html

1 个答案:

答案 0 :(得分:1)

看起来这是API中的错误。截至目前,问题中链接的差异显示

- (NSURLSessionDataTask * _Nonnull)dataTaskWithRequest:(NSURLRequest * _Nonnull)request