Sqlite3 завершается с ошибкой, если я не скомпилирую без оптимизации, но только на iOS 3.1.3

#iphone #ios #sqlite #compilation

#iPhone #iOS #sqlite #Сборник

Вопрос:

У меня очень странная проблема. Мое использование sqlite в моем проекте, которое работало некоторое время, теперь перестало работать с скомпилированным кодом Xcode 4, но только на устройствах с iOS3.1.3. Он не возвращает записи, но если я отключу оптимизацию кода, он работает отлично.

Кто-нибудь знает, что может быть причиной этого, или сталкивался с подобными проблемами.

Спасибо, Раэль

 // get word from database
NSString *query = [[NSString alloc] initWithFormat:@"select kana_word, kanji_word, word_type_name, word_subtype_name, custom_category_name, kana_index, dictionary_id from dictionary join word_type on word_type.word_type_id=dictionary.word_type_id join word_subtype on word_subtype.word_subtype_id=dictionary.word_subtype_id join custom_category on custom_category.custom_category_id=dictionary.custom_category_id where kana_index=%d", inKanaIndex];
sqlite3_stmt *statement;
NSLog(@"%@", query);
const char *cQuery = [query UTF8String];
if (sqlite3_prepare_v2(jmwDb, cQuery, -1, amp;statement, nil) != SQLITE_OK) {
    char *errMessage;
    errMessage = (char*)sqlite3_errmsg(jmwDb);
    sqlite3_finalize(statement);
    [query release];
    return nil;
}

// build a word object
int kanji_key;
if (sqlite3_step(statement) == SQLITE_ROW) {
    // create new word
    self.kana = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 0)];
    self.kanji = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 1)];
    self.wordType = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 2)];
    self.wordSubType = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 3)];
    self.customCategory = [NSString stringWithUTF8String:(char*)sqlite3_column_text(statement, 4)];
    self.kanaIndex = sqlite3_column_int(statement, 5);
    kanji_key = sqlite3_column_int(statement, 6);
    self.dictionaryId = kanji_key;
}
else {
    sqlite3_finalize(statement);
    [query release];
    return nil;
}
  

Комментарии:

1. можете ли вы добавить часть кода, который возвращает записи? Кому-то действительно сложно диагностировать «что-то не работает в 3.1.3»

2. Конечно, если это поможет, вот код. При включенной оптимизации не удается вернуть ни одной строки, но при отключенной оптимизации она работает нормально.