Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIC控制+;网络崩溃_Ios_Objective C_Memory Management_Afnetworking 2_Uirefreshcontrol - Fatal编程技术网

Ios UIC控制+;网络崩溃

Ios UIC控制+;网络崩溃,ios,objective-c,memory-management,afnetworking-2,uirefreshcontrol,Ios,Objective C,Memory Management,Afnetworking 2,Uirefreshcontrol,我使用的是AFNetworking 2.x和这个UIRefreshControl+AFNetworking类别,在使用UIViewController和UITableView作为属性时遇到了一个奇怪的问题,我添加了一个UIRefreshControl和这个特定的代码 CGRect frame = self.mytableView.bounds; frame.origin.y = -frame.size.height; UIView *refreshBackgroundView = [[UIVie

我使用的是AFNetworking 2.x和这个UIRefreshControl+AFNetworking类别,在使用UIViewController和UITableView作为属性时遇到了一个奇怪的问题,我添加了一个UIRefreshControl和这个特定的代码

CGRect frame = self.mytableView.bounds;
frame.origin.y = -frame.size.height;
UIView *refreshBackgroundView = [[UIView alloc]initWithFrame:frame];
refreshBackgroundView.backgroundColor = [UIColor colorWithRed:239/255.0f green:239/255.0f blue:244/255.0f alpha:1.0f];
self.refreshControl = [[UIRefreshControl alloc]init];
[self.mytableView insertSubview:refreshBackgroundView atIndex:0];
[self.mytableView addSubview:self.refreshControl];
self.refreshControl.tintColor = [UIColor lightGrayColor];
[self.refreshControl addTarget:self action:@selector(getAlertList:) forControlEvents:UIControlEventValueChanged];
[self.mytableView.tableHeaderView addSubview:self.refreshControl];
UIRefreshControl+AFNetworking.h导致EXC_坏访问,当我调用我的Web服务并且用户执行一个序列(任务未完成)时,任务继续从我死了的VC调用UIRefreshControl,我对self.refreshControl属性有很强的参考

错误的跟踪留给方法的AFURLSessionManager.h中的这部分代码:

- (void)URLSession:(__unused NSURLSession *)session
              task:(NSURLSessionTask *)task
didCompleteWithError:(NSError *)error  
正是这句话:

dispatch_async(dispatch_get_main_queue(), ^{
    [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidCompleteNotification object:task userInfo:userInfo];
});
我向AFNetworking提出了一个问题@matt(AFNetworking创建者和维护者)的回答是:“您的UIRefreshControl在任务完成之前被解除分配,导致选择器被发送到错误的目标。请确保保留对该控件的强引用,以确保它不会过早释放。”一些我已经知道的事情。我已经使用仪器检测僵尸对象,所有的东西似乎都是UIRefreshControl,有什么办法解决这个问题吗

我从@matt(AFNetworking创建者和维护者)那里得到的其他建议或评论是:“在执行segue之前,开发人员有责任保留对控件的引用或取消相关任务。”。我已经试着在赛格之前取消任务,但这是同样的问题

如果有人有这样做的想法或有解决这个问题的办法,我会非常乐意倾听


Thx

您有没有找到解决方案?我这样问是因为我遇到了同样的问题——虽然没有,但类似。试图保留一个强引用,但如果VC在获取之前被释放,这似乎并不能解决问题。同样的崩溃!。。。。有什么解决办法吗?我也面临同样的问题。。。