FMDB崩溃:[FMDatabase executeQuery:withArgumentsInArray:orDictionary:orVAList:]

时间:2016-02-03 06:57:06

标签: objective-c multithreading fmdb

我正在使用FMDB FMDatabaseQueue来读/写多线程应用数据库。这是我的代码,看起来像,

在后台主题中:

[queue inTransaction:^(FMDatabase *db, BOOL *rollback) {

        for (NSDictionary *dic in ary) {

           //long process  
           //  .
           //  .

            bol = [db executeUpdate:@"insert query"];
        } 
    }];

在UI线程中:

double Price1=[self getPrice];
double Price2=[self getPrice];

-(double )getPrice{

    __block double price=0.0;

    [queue inDatabase:^(FMDatabase *db) {

        FMResultSet *rs = [db executeQuery:querySQL];
        if([rs next])
            price=[rs doubleForColumnIndex:1];
    }];


    return price;
}

队列是一个单独的FMDatabaseQueue对象。我的多线程应用程序因原因而崩溃:

FMDatabase.m line 776 -[FMDatabase executeQuery:withArgumentsInArray:orDictionary:orVAList:]
FMDatabase.m line 896 -[FMDatabase executeQuery:]

知道这次事故发生的原因。任何解决方案?

0 个答案:

没有答案