使用在名为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"];
请帮忙。
答案 0 :(得分:1)
您过度释放type
。删除[type release];
。并使用ARC来避免这种错误。
答案 1 :(得分:1)
当您调用以init或copy之外的任何内容开头的方法时,您将返回一个将在以后某个时间点自动释放的对象。 reference- ray's memory management blog
记住这一点我认为你不应该发布尼古拉所说的类型对象。