1

使用 DataHelper 类中定义的以下函数返回的值设置标签时获取 EXC_BAD_ACCESS(所有数据库处理在此处完成):

+(NSString *)getCurrentBalanceAndType:(NSString *)account
{
    sqlite3_stmt *statement=NULL;
    float bal=0;
    NSString *type=NULL, *balance_type=NULL;
    //String decimalFormat="%.2f";
    statement = [DataHelper getDetailsFromAccountBal:account:[DataHelper currentMonth]];
    if (sqlite3_step(statement) == SQLITE_ROW)
    {
        bal = sqlite3_column_double(statement,2);
        type = [[NSString alloc] initWithUTF8String:(const char *) sqlite3_column_text(statement, 0)];
    } 
    sqlite3_finalize(statement);

    NSString *stringBal=[NSString stringWithFormat:@"%.2f", bal];
    type=[[type uppercaseString] stringByAppendingString:@"r"];
    balance_type=[[stringBal stringByAppendingString:@" "]stringByAppendingString:type];
    [type release];
    return balance_type;
}

这就是我在 viewDidLoad 中设置标签的方式:

 lbCreditCurrBal.text=[DataHelper getCurrentBalanceAndType:@"Some Text"];

请帮忙。

4

2 回答 2

1

你放纵了type。删除[type release];. 并使用ARC来避免这种错误。

于 2012-08-20T09:10:56.103 回答
1

当您调用以除 init 或 copy 以外的任何内容开头的方法时,您将返回一个对象,该对象将在将来的某个时间自动释放。reference -ray 的内存管理博客

记住上面我认为你不应该像 Nikolai 所说的那样释放类型对象。

于 2012-08-20T09:20:44.200 回答