我从nsurl获取数据,但如果我可以更改视图,则停止接收NSData
我在我的代码
下面停止接收数据的网址-(void)AllPoint{
NSString *passString=[NSString stringWithFormat:URL];
//NSLog(@"all %@",passString);
NSURL *url_album=[NSURL URLWithString:passString];
dispatch_async(kBgQueue, ^{
NSData* data = [NSData dataWithContentsOfURL:url_album];
[self performSelectorOnMainThread:@selector(allPOINT:) withObject:data waitUntilDone:YES];
});
}
-(void)allPOINT:(NSData *)responseData{
if (responseData==nil){
} else {
NSError* error;
NSMutableDictionary* json = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error];
//NSLog(@"all:%@",json);
}
}
怎么可能?
答案 0 :(得分:2)
块无法取消..也不能取消呼叫dataWithContentsOfURL
。它无论如何都会完成。
你有两个选择
...我;顺其自然,因为方式1是很多额外的工作;)
__weak typeof(self) wself = self;
dispatch_async(kBgQueue, ^{
typeof(wself) sself = wself;
NSData* data = [NSData dataWithContentsOfURL:sself->url_album];
if(sself.visible)
[sself performSelectorOnMainThread:@selector(allPOINT:) withObject:data waitUntilDone:YES];
});
a)通知我使用弱自我反对自我,以便不保留自我...
b)您需要一个由您控制的属性visible
。您在viewDidAppear中将其设置为true,在viewWillDisappear中将其设置为false