因UIRefreshControl而异常

时间:2012-11-02 16:29:38

标签: ios ios6 uirefreshcontrol

我第一次使用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

我不明白为什么......有什么想法吗?

2 个答案:

答案 0 :(得分:6)

  

好吧,对于初学者,你不应该在后台线程上调用-endRefreshing。 UIKit方法(包括那个)应该在主线程上执行。不过,我不确定这是否会导致你的问题。

谢谢shusta,它对我有很大的帮助!

答案 1 :(得分:0)

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