问题在于:
应用程序在第二行崩溃,我得到了EXC_BAD_ACCESS异常。
NSURL *url = [NSURL URLWithString:@"..."];
NSError *error = nil;
NSData *data = [NSData dataWithContentsOfURL:url
options:NSDataReadingMapped
error:&error];
NSLog(@"Error: %@", error);
NSLog(@"%@", [data length]);
我得到了:
Error: (null)
Program received signal: “EXC_BAD_ACCESS”.
有什么想法吗?
答案 0 :(得分:6)
数据的长度是无符号整数,而不是对象,因此必须使用适当的格式说明符。所以:
NSLog(@"%lu", (unsigned long)[data length]);
会奏效。有关更多信息,请参阅documentation中的NSLog格式说明符。
此外,除非方法指示错误状态,否则不应检查error
(请参阅每个也报告错误的方法的相应文档)。即使没有发生错误,它也可能包含意外数据。所以:
if( !data ) {
NSLog(@"An error must have occurred: %@, %@", error, [error userInfo]);
} else {
NSLog(@"The data length: %lu", (unsigned long)[data length]);
}