我第一次使用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
我不明白为什么......有什么想法吗?
答案 0 :(得分:6)
好吧,对于初学者,你不应该在后台线程上调用-endRefreshing。 UIKit方法(包括那个)应该在主线程上执行。不过,我不确定这是否会导致你的问题。
谢谢shusta,它对我有很大的帮助!
答案 1 :(得分:0)
这里的答案是正确的,为了解决这个问题,我做了以下工作。 我在主线程中设置了一个计时器,它监视一个布尔值。当你准备好停止刷新...在你的子线程中将该布尔值设置为true。计时器将看到并从主线程调用endRefreshing函数。