代码之家  ›  专栏  ›  技术社区  ›  zs2020

当访问[NSData dataWithContentsOfURL:url]的长度时,应用程序崩溃

  •  0
  • zs2020  · 技术社区  · 15 年前

    问题是:

    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”.
    

    你知道吗?

    1 回复  |  直到 15 年前
        1
  •  6
  •   Jason Coco superfell    15 年前

    NSLog(@"%lu", (unsigned long)[data length]);
    

    会有用的。有关更多信息,请参阅中的NSLog格式说明符 documentation .

    另外,你不应该检查 error 除非方法指示错误状态(请参阅每个同时报告错误的方法的相应文档)。即使没有发生错误,它也可能包含意外数据。所以:

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