普段はこういう質問はしないのですが、どうしても頭に入ってしまいます。データベースに接続してJSONをダウンロードするクラス「GetTableInfoFromDatabase」があります。これは、タブバー アプリケーションの最初の画面からうまく機能します。データを効果的に更新したいだけ、getNewData メソッドを呼び出すことができます。
「GetTableInfoFromDatabase」クラスのインスタンスを作成して、別のタブからまったく同じメソッドを呼び出そうとすると、問題が発生します。次のエラーが表示されます。
*** -[GetTableInfoFromDatabase respondsToSelector:]: message sent to deallocated instance 0x1d89e830
面白いことに、私は ARC を使用しています。(私の意見では) 犯人は ASIHTTPRequest です。プロジェクトをコンパイルするには、-fno-objc-arc を有効にする必要がありました。このライブラリは GetTableInfoFromDatabase クラスで使用されます。
クラスは次のとおりです。
- (void) getEventDataWithSender:(id)sender{
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"-------.com/getdata.php"]];
[request setDelegate:self];
NSLog(@"Running!");
[request startAsynchronous];
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
self.managedObjectContext = appDelegate.managedObjectContext;
}
そして、これが私がそれを呼んでいる方法です:
GetTableInfoFromDatabase *getInfo = [[GetTableInfoFromDatabase alloc]init];
[getInfo getEventDataWithSender:self];
タブの順序も変更したので、表示される最初のタブは純粋にこのメソッドを呼び出すだけで、他には何もありません。「GetTableInfoFromDatabase」が前回最初に初期化したクラスによって以前に初期化される前でさえありません。それでもクラッシュします。
誰かアイデアはありますか?これはとてもイライラします!