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

initまたはcopy以外で始まるメソッドを呼び出すと、将来のある時点で自動解放されるオブジェクトが返されます。reference -rayのメモリ管理ブログ

上記を念頭に置いて、ニコライが言ったように型オブジェクトを解放するべきではないと思います。

于 2012-08-20T09:20:44.200 に答える
1

を過剰にリリースしていtypeます。を削除し[type release];ます。この種のエラーを回避するには、ARC を使用します。

于 2012-08-20T09:10:56.103 に答える