FMDB inTransaction导致EXC_BAD_INSTRUCTION

时间:2017-07-09 20:25:06

标签: ios objective-c fmdb

我有这个随机崩溃的代码。我无法理解坠机背后的原因。

__block NSMutableArray *returnEntries= [NSMutableArray array];
    [[[DB sharedManager]getSecureQueue] inTransaction:^(FMDatabase * _Nonnull db, BOOL * _Nonnull rollback) {

        FMResultSet *results = [db executeQuery:@"SELECT Name FROM Contacts WHERE PK= ?",@(pk)];
        while([results next]) {
            //process data

        }
    }];

我得到了崩溃:

EXC_BAD_INSTRUCTION (code-EXC_I386_INVOP,subcode=0x0)

我在同一个队列上运行所有的SQL查询。

-(FMDatabaseQueue*)getSecureQueue{
    return _secureQueue;
}

其中_secureQueue是一次性初始化

 _secureQueue= [FMDatabaseQueue databaseQueueWithPath:dbPath];

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

当我在后台线程中运行代码时,崩溃没有发生。如果有人能够在这里发表一些有关其发生情况的见解,那就太棒了。