丢失...
当我按下一个单元格后尝试从数组 (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/