【问题标题】:EXC_BAD_ACCESS with NSDictionary带有 NSDictionary 的 EXC_BAD_ACCESS
【发布时间】:2011-06-15 22:44:44
【问题描述】:

我正在尝试根据它们在NSArray 中的位置将数组中的对象添加到NSDictionary,但是一旦分配了NSDictionary,应用程序就会崩溃。任何想法为什么?

NSString *venue_title = [venues objectAtIndex:[actionSheet tag]];
NSString *venue_address = [venues_full_address objectAtIndex:[actionSheet tag]];
NSString *venue_lat = [venues_lat objectAtIndex:[actionSheet tag]];
NSString *venue_lng = [venues_lng objectAtIndex:[actionSheet tag]];        
NSLog(@"%@, %@, %@, %@", venue_title, venue_address, venue_lat, venue_lng);        
NSDictionary *venue_details_dict = [[NSDictionary alloc] initWithObjects:[NSArray arrayWithObjects:venue_title, venue_address, venue_lat, venue_lng, nil] forKeys:[NSArray arrayWithObjects:@"name", @"address", @"lat", "lng", nil]];

当我 NSLog 对象时,我看到了所有正确的值,但是 NSDictionary 使应用程序崩溃并出现 EXC_BAD_ACCESS 错误。我启用了NSZombies,但是当它崩溃时什么都没有显示,就像它经常显示的那样。关于这里发生了什么的任何想法?提前致谢!

【问题讨论】:

  • 请将崩溃报告的文本和任何前面的错误消息粘贴到您的问题中。

标签: objective-c xcode ios4 nsdictionary exc-bad-access


【解决方案1】:
NSDictionary *venue_details_dict = [[NSDictionary alloc] initWithObjects:
     [NSArray arrayWithObjects:venue_title, venue_address, venue_lat, venue_lng, nil]
   forKeys:
     [NSArray arrayWithObjects:@"name", @"address", @"lat", "lng", nil]];

您忘记了"lng" 上的@。轰隆隆。

【讨论】:

  • 哇。这么笨。我不敢相信我没有注意到这一点。谢谢!
  • 这也有效 ;-) NSDictionary *venue_details_dict = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:venue_title,venue_address,venue_lat,venue_lng,nil] forKeys:[NSArray arrayWithObjects:@"name", @"address ", @"lat", @"lng", nil]];
  • 请提交一个错误——编译器应该能够捕捉到它。
【解决方案2】:

为了更清楚,使这样的错误更容易看到尝试:

NSDictionary *venue_details_dict = [NSDictionary dictionaryWithObjectsAndKeys:
    venue_title,   @"name",
    venue_address, @"address",
    venue_lat,     @"lat",
    venue_lng,     @"lng",
    nil];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多