objective-c - 从数组中抓取项目时崩溃... objective-c

标签 objective-c ios ios5

丢失...

当我按下一个单元格后尝试从数组 (tourresult) 中获取一个项目时,总是崩溃。我想从数组中获取索引,这样我就可以创建一个对象并将其传递给下一个窗口。看起来我的阵列正在某处发布,但我没有在其上设置自动释放,也没有在任何地方发布它。我打开了 Zombie 和其他东西,但除了“消息已发送到解除分配的实例”之外,它没有给我任何其他信息,但它没有解除分配......

(ps:这是将数据传输到另一个 View 的正确方法吗?)

我已经设置了 .h 文件 NSMutableArray *旅游结果; .m 中的属性和合成

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    NSDictionary* loan = [tourResult objectAtIndex:indexPath.row];
    Tour *tour = [[[Tour alloc] init] autorelease];
    tour.tourID = [loan objectForKey:@"partner_id"];
    tour.tourName = [loan objectForKey:@"name"];
    tour.tourDescription = [loan objectForKey:@"use"];
    tour.tourLat = [[loan objectForKey:@"loan_amount"] floatValue];
    tour.tourLon = [[loan objectForKey:@"id"] floatValue];


    TableViewDetailViewController *fvController = [[TableViewDetailViewController alloc] initWithNibName:@"TableViewDetailViewController" bundle:[NSBundle mainBundle]];
    fvController.tour = tour;
    [self.navigationController pushViewController:fvController animated:YES];
    [fvController release];
    fvController = nil;

}

- (void)fetchedData:(NSData *)responseData 
{

    //parse out the json data
    NSError* error;
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];

    tourResult = [[NSMutableArray alloc] init];
    tourResult = [json objectForKey:@"loans"];
    for (int x = 0;x < [tourResult count];x++)
    {
        NSDictionary* loan = [tourResult objectAtIndex:x];
        [itemsList addObject:[loan objectForKey:@"name"]];
    }
    [itemsList removeObjectAtIndex:0];
    [myTableView reloadData];

}

-(void)loadView
{

    myTableView = [[UITableView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame] style:UITableViewStylePlain];
    myTableView.delegate = self;
    myTableView.dataSource = self;

    myTableView.autoresizesSubviews = YES;

    itemsList = [[NSMutableArray alloc] init];
    [itemsList addObject:@"Loading..."];

    self.navigationItem.title = @"Tours";
    self.view = myTableView;

    dispatch_async(kBgQueue, ^{
        NSData* data = [NSData dataWithContentsOfURL: kLatestKivaLoansURL];
        [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
    });

}

最佳答案

您在“fetchedData:”方法中分配了 tourResult 两次。第一个分配它。第二个赋值是来自您的 json 对象的“objectForKey:”(“objectForKey:”可能返回 nil,也可能不返回 nil)。

因此您丢失(并泄漏)了第一个创建的对象,并且可能在您的第二个任务中没有得到任何有效的东西。

关于objective-c - 从数组中抓取项目时崩溃... objective-c ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10792530/

相关文章:

ios - 仅在 UIWebView 中显示站点的一部分

ios - 是否可以将 UI 图像与指定的链接共享到 FB?

cocoa-touch - 可以在 VOIP 应用程序中将多个 tcp 套接字标记为 kCFStreamNetworkServiceTypeVoIP 吗?

iphone - resourcePath 不工作 Xcode

objective-c - 无法使用 UIDocumentPicker 导入页面和编号文档

ios - UICollectionView 接收到具有不存在的索引路径的单元格的布局属性

objective-c - 我如何知道 NSComboBox 当前是否打开了下拉列表?

javascript - UIAutomation [UITextField resignFirstResponder]

iphone - iOS 应用程序登录流程

objective-c - 创建的嵌入式 NSButton 显示不正确