应用崩溃访问的长度时[NSData的dataWithContentsOfURL:URL]

zs2*_*020 0 iphone

这是问题所在:

应用程序在第二行崩溃,我得到了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]);
Run Code Online (Sandbox Code Playgroud)

我有:

Error: (null)
Program received signal:  “EXC_BAD_ACCESS”.
Run Code Online (Sandbox Code Playgroud)

任何的想法?

Jas*_*oco 6

的数据的长度是无符号整数,而不是一个对象,所以必须使用适当的格式说明.所以:

NSLog(@"%lu", (unsigned long)[data length]);
Run Code Online (Sandbox Code Playgroud)

将工作.有关更多信息,请参阅文档中的 NSLog格式说明符.

此外,error除非方法指示错误状态,否则不应检查(请参阅报告错误的每种方法的相应文档).即使没有发生错误,它也可能包含意外数据.所以:

if( !data ) {
  NSLog(@"An error must have occurred: %@, %@", error, [error userInfo]);
} else {
  NSLog(@"The data length: %lu", (unsigned long)[data length]);
}
Run Code Online (Sandbox Code Playgroud)