如果我们设置标头“Content-Length”,NSHTTPURLResponse 的 initWithURL 方法会崩溃

jia*_*hua 2 crash header objective-c ios nshttpurlresponse

这是一些代码,我们在其中设置了一个NSHTTPURLResponse对象:

NSString * data = @"response successful";
NSUInteger length = [data length];
NSDictionary * headersDict = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithUnsignedInt:length], @"Content-Length", nil];

NSHTTPURLResponse * response = [[NSHTTPURLResponse alloc] initWithURL:[request URL] statusCode:200 HTTPVersion:@"1.1" headerFields:headersDict];
Run Code Online (Sandbox Code Playgroud)

headersDict如果我们将其作为参数,以下代码将在最后一行崩溃。

错误:testReportAppOpenToAdMobWithAppstoreId (AdTrackerTests) 失败:-[__NSCFNumber length]:无法识别的选择器发送到实例 0xf653f40

我不知道为什么会崩溃。调试显示headersDict没问题,我怀疑是苹果的bug。

有任何想法吗?

Tho*_*asW 5

NSHTTPURLResponse可能正在期待一个NSString,而不是一个NSNumber。尝试将该length值转换为NSString.

  • `NSHTTPURLResponse` 标头中的每个键和值都需要一个 `NSString`...哦,我的 2 小时... (2认同)