我有一个应用程序,其中有五个屏幕.
在每个屏幕上,在viewDidLoad中我从服务器访问数据.
在每个屏幕上,我有下一个按钮.
当我从屏幕一到屏幕五(通过单击下一步4次),在NSLog中,我仍然看到所有前四个视图控制器完成的过程.
有什么办法,我怎么能杀死那些线程?
简而言之,当我离开那个视图时,我不想做任何过程,即如果我从视图3到4,我想停止我对视图3的任务.
获取早期观点的数据&等待那些数据(这是不需要的)不适合app,因此我想要像我上面解释的那样.
编辑1
下面是我用于读取数据的代码.
.H
@property(nonatomic, retain) NSMutableData *webData;
@property(nonatomic, retain) NSMutableData *data;
使用下面我请求数据
.M
NSString *myTMainURL = [NSString stringWithFormat:@"http://www.google.com"];
NSURL *url = [NSURL URLWithString:myTMainURL];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[[NSURLConnection alloc] initWithRequest:request delegate:self];
阅读,下面是我的阅读方式.
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
NSLog(@"didReceiveResponse");
data = [[NSMutableData alloc] init ];
[webData setLength: 0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData {
NSLog(@"didReceiveData");
[data appendData:theData];
[webData appendData:data];
NSLog(@"didreceveidata leng===%d===%d", [webData length], [data length]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"connectionDidFinishLoading");
NSString *myDataFromLink = [[NSString alloc] initWithBytes: [data mutableBytes] length:[data length] encoding:NSUTF8StringEncoding];
NSLog(@"myDataFromLink====%@--", myDataFromLink);
}
最佳答案 在viewWillDisappear:中,将cancel发送到正在运行的任何操作.
当然,这假设您有一个可取消的任务/方法/操作.
例如,对于网络请求,如果使用NSURLConnection,则采用委托方法时就是这种情况.使用NSURLConnection方便的类方法sendAsynchronousRequest:queue:completionHandler:这是不可能的.因此,任何严肃的应用程序都将使用委托方法,因为长时间运行的异步操作必须是可取消的.