2011-10-16 57 views
0

我有我的tableView连接到数据库表。 当我点击一行时,我将视图与物品的所有细节一起推入。每件事情都很好。推动详细视图

这是在主类中的代码:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    DetailsViewController *detailViewController = [[DetailsViewController alloc] initWithNibName:@"DetailsViewController" bundle:nil]; 

    NSDictionary *rowVals = (NSDictionary *) [shoppingListItems objectAtIndex:indexPath.row]; 

    NSString *titleString = [(NSString *) [rowVals objectForKey:@"item"] autorelease]; 
    NSString *category = [(NSString *) [rowVals objectForKey:@"groupid"] autorelease]; 
    NSNumber *priceNumber = [(NSNumber *) [rowVals objectForKey:@"price"] autorelease]; 
    NSString *priceString = [[priceFormatter stringFromNumber: priceNumber] autorelease]; 
    NSDate *date = [(NSDate *) [rowVals objectForKey:@"dateadded"] autorelease]; 
    NSString *dateString = [[dateFormatter stringFromDate:date] autorelease]; 
    NSNumber *IO = [(NSNumber *) [rowVals objectForKey:@"incout"] autorelease]; 

    detailViewController.stringTitle = titleString; 
    detailViewController.categoryVar = category; 
    detailViewController.priceVar = priceString; 
    detailViewController.dateVar = dateString; 
    detailViewController.IOVar = IO; 

    [self.navigationController pushViewController:detailViewController animated:YES]; 
    [detailViewController release]; 
} 

,这在DetailsViewController.m

- (void)viewDidLoad {  
    [super viewDidLoad]; 
    self.navigationItem.title = stringTitle; 
    nome.text = stringTitle; 
    prezzo.text = priceVar; 
    data.text = dateVar; 
    if ([IOVar isEqualToNumber:[NSNumber numberWithInt:1]]) { 
     categoria.hidden = NO; 
     categoriaLabel.hidden = NO; 
     photoLabel.hidden = NO; 
     categoria.text = categoryVar; 
    } else if ([IOVar isEqualToNumber:[NSNumber numberWithInt:0]]){ 
     categoria.hidden = YES; 
     categoriaLabel.hidden = YES; 
     photoLabel.hidden = YES; 
     categoria.text = @""; 
    } 
} 

如果我推,回到了3倍以上我的应用程序崩溃与EXC_BAD_ACCESS在main.m

谢谢,如果你读到这里,抱歉我的英文不好。

+0

好男人,大家给了我正确的答案,但我必须为最适合自己的“使命召唤”的笑话选择零星消息! 非常感谢大家! – Oiproks

回答

0

这绝对听起来像你过度释放一个对象(又名'僵尸')。

Xcode Instruments是一款用于追踪僵尸的极好工具。

在这里阅读,并给它一个去。

http://www.markj.net/iphone-memory-debug-nszombie/

它更开心的莫过于在值班;-)

好运召唤杀死僵尸!

+0

太棒了,谢谢你的链接! – Oiproks

0

也许你是过度释放你的变量。您正在从数组中的字典中抽取详细控制器的ivars。在将它们分配给一个字符串后,您可以自动释放它们。我认为这是问题。您正在清空数据阵列。当您在稍后的select select请求时,尝试访问不再存在的数组或字典对象 - > EXC_BAD_ACCESS。

0

您不需要自动释放从字典中获得的值,因为您不拥有它们。 Basic Memory Management Rules:如果您使用名称以“alloc”,“new”,“copy”或“mutableCopy”开头的方法创建对象,或者通过保留它来获取所有权,则您拥有该对象。

在你的情况下,代码应该是:

detailViewController.stringTitle = [rowVals objectForKey:@"item"];