1

UIRefreshControlを初めて使用していますが、更新コントロールの読み込み中に例外が発生します。

私の申告書です :

self.refreshControl = [[UIRefreshControl alloc] init];
self.refreshControl.tintColor = [UIColor grayColor];
[self.refreshControl addTarget:self action:@selector(refreshView:) forControlEvents:UIControlEventValueChanged];
[self.actualitesTableView addSubview:self.refreshControl];

これが私の関数です:

- (void)refreshView:(UIRefreshControl *)sender {
    [self performSelectorInBackground:@selector(threadAction) withObject:nil];
}

- (void)threadAction {
    [self choixMAJ];
    NSLog(@"OK1");
    [self.refreshControl endRefreshing];
    NSLog(@"OK2");
}

choixMAJ()メソッドを使用すると、完全に機能します。

すべてが順調に進んでおり、OK2がログに記録されますが、その後、更新コントロールが消えると、アプリが次のエラーでクラッシュしました。

*** -[__NSArrayM removeObject:]: message sent to deallocated instance 0x655a1a0

理由がわかりません。何かアイデアはありますか?

4

2 に答える 2

6

まず、バックグラウンド スレッドで -endRefreshing を呼び出すべきではありません。UIKit メソッド (それを含む) は、メイン スレッドで実行する必要があります。ただし、それが実際に問題を引き起こしているかどうかはわかりません。

shusta に感謝します。

于 2012-11-03T12:18:26.603 に答える