2012-04-17 6 views
0

私のアプリはiOS 4と互換性があるように準備しています。私のsegmentedControlの0インデックスを有効にすると、コードがopenDatabaseメソッドとcloseDatabase方法。私はコード全体をデバッグしていて、segmentedControlが有効になるとすぐに、これらの2つのメソッドが呼び出されることを確認しました。ここでsetEnabled for segmentedControlはiOS 4の他のメソッドを呼び出します

ログの抜粋:

> 2012-04-17 17:20:59.294 Abiliator[27897:11003] viewWillAppear - before database open 
2012-04-17 17:20:59.296 Abiliator[27897:11003] OpenDatabase 
2012-04-17 17:20:59.297 Abiliator[27897:11003] viewWillAppear - loadAppSettings 
2012-04-17 17:20:59.311 Abiliator[27897:11003] viewWillAppear - getCurrentLearningSubject 
2012-04-17 17:20:59.340 Abiliator[27897:11003] viewWillAppear - switchLearningBoxControl 
2012-04-17 17:20:59.341 Abiliator[27897:11003] Inside switchLearningBoxControl 
**2012-04-17 17:20:59.394 Abiliator[27897:11003] OpenDatabase 
2012-04-17 17:21:00.566 Abiliator[27897:11003] CloseDatabase** 
2012-04-17 17:21:00.567 Abiliator[27897:11003] Method abiliatorViewController - Function switchLearningBoxControl: Error preparing the statement 'library routine called out of sequence'. 
2012-04-17 17:21:00.568 Abiliator[27897:11003] Method abiliatorViewController - Function switchLearningBoxControl: Error preparing the statement 'library routine called out of sequence'. 
2012-04-17 17:21:00.569 Abiliator[27897:11003] Method abiliatorViewController - Function switchLearningBoxControl: Error preparing the statement 'library routine called out of sequence'. 
2012-04-17 17:21:00.570 Abiliator[27897:11003] Method abiliatorViewController - Function switchLearningBoxControl: Error preparing the statement 'library routine called out of sequence'. 
2012-04-17 17:21:00.570 Abiliator[27897:11003] Finished switchLearningBoxControl 
2012-04-17 17:21:00.571 Abiliator[27897:11003] viewWillAppear - getQuestionFromDB 
2012-04-17 17:21:00.572 Abiliator[27897:11003] CloseDatabase 
2012-04-17 17:21:00.572 Abiliator[27897:11003] Failed to close the database with message 'library routine called out of sequence'. 

次の2つのその後のオープンとクローズデータベースメソッドの呼び出しを参照してください。しかし、それらは私のコードによって明示的に呼び出されるわけではありませんが、いくつかの "ゴースト"プロセスはコードのその部分を実行しています。

iOS 5でも全く同じコードが実行されますが、問題はまったくなく、Simulatorでもデバイスでも問題ありません。

何が問題なのですか?ありがとう。

- (void) switchLearningBoxControl:(NSString *) mySubjectID { 
const char *sql = "select count (*) from ABILIATOR_CARD where learningbox = ? and subject_id = ?"; 
for (NSInteger mySegment=0;mySegment < 5;mySegment++) { 
    sqlite3_stmt *selectstmt; 

    if(sqlite3_prepare_v2(database, sql, -1, &selectstmt, NULL) == SQLITE_OK) { 
     sqlite3_bind_int(selectstmt, 1, mySegment+1); 
     sqlite3_bind_text(selectstmt, 2, [mySubjectID UTF8String], -1, SQLITE_TRANSIENT); 
     if (sqlite3_step(selectstmt) == SQLITE_ROW) { 
      int count = sqlite3_column_int(selectstmt, 0); 
      if (count < 1) { 
       [self.learningBoxControl setEnabled:NO forSegmentAtIndex:mySegment]; 
      } 
      else { 
       [self.learningBoxControl setEnabled:YES forSegmentAtIndex:mySegment]; 
      } 
     } 
     else { 
      [self.learningBoxControl setEnabled:NO forSegmentAtIndex:mySegment]; 
     } 

    } 
    else { 
     NSLog(@"Method abiliatorViewController - Function switchLearningBoxControl: Error preparing the statement '%s'.", sqlite3_errmsg(database)); 
    } 
    sqlite3_finalize(selectstmt); 
} 
} 
+0

ブレークポイントを開いている/閉じるデータベース呼び出しとスタックを参照してください? –

+0

ありがとう。問題が見つかりました:iOS 4ではsetEnabledがIBActionを呼び出し、iOS 5はそうではありません。私はそのIBActionに別のオープンを持っていますが、アプリを混乱させます:-)その変更を認識していなかったので、私はドキュメントを読んだので、4と5の間にそのような変更は見られませんでした。その問題に明るい昼光をもたらしました。チューリッヒ、ルネからの歓声 – renesteg

答えて

0

iOS 4でsetEnabledはIBActionを呼び出しますが、iOS 5ではそうではありません。私はそのIBActionに別のオープンを持っていますが、アプリを混乱させます:-)その変更を認識していないので、私はドキュメントを読んで4から5の間の変更は見ませんでした。

関連する問題