【发布时间】:2012-11-02 16:29:37
【问题描述】:
我是第一次使用 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
我不明白为什么.. 有什么想法吗?
【问题讨论】:
-
好吧,对于初学者,您不应该在后台线程上调用 -endRefreshing。 UIKit 方法(包括那个)应该在主线程上执行。不过,我不确定这是否真的导致了您的问题。
-
你是对的。发表您的评论作为答案,我会接受 :) 非常感谢!
-
addSubview:调用是不必要的。通过简单地设置UITableViewController子类的refreshControl属性,您已经处理好了。
标签: ios ios6 uirefreshcontrol