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 回答
0

这里的答案是正确的,为了解决这个问题,我做了以下事情。我在主线程中设置了一个计时器来监视布尔值。当您准备停止复习时...在您的子线程中将该布尔值设置为 true。计时器将看到并从主线程调用 endRefreshing 函数。

于 2013-05-22T16:03:58.630 回答