J'ai une fonction de boucle et appelée [NSThread sleepForTimeInterval: 2.0] ;. cela signifie après 2s, la fonction de boucle est appelée. Je veux quand passer une nouvelle vue, cette fonction de boucle est stop et quand elle revient, elle est appelée à nouveau.Puis-je arrêter ou annuler la fonction de boucle lors de l'utilisation de [NSThread sleepForTimeInterval: 2.0]; dans IOS
J'utiliser ce code pour fonction de boucle appel:
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
loop = YES;
delete=NO;
temp = [FileCompletedArray mutableCopy];
NSOperationQueue *queue = [NSOperationQueue new];
operations = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(updateArray) object:nil];
[queue addOperation:operations];
[operations release];
}
et la fonction de boucle:
-(void)updateArray{
while (loop)
{
NSLog(@"start loop");
if(loop){
[NSThread sleepForTimeInterval:2.0];
NSLog(@"start send request");
NSURL *url1 = [NSURL URLWithString:@"http://server.com"];
NSMutableURLRequest *afRequest = [httpClient requestWithMethod:@"POST" path:nil parameters:params1] ;
operation= [[AFHTTPRequestOperation alloc] initWithRequest:afRequest];
NSLog(@" request sent");
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Server response1");
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"error: %@", error);
}
];
[httpClient enqueueHTTPRequestOperation:operation];
}
else
return;
}
}
Et viewdisappear()
-(void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
loop = NO;
delete=NO;
[operations cancel] ;
}
Mon problème est quand adopter une nouvelle vue, updateArray appelle toujours. Ça ne s'arrête pas. Avez-vous une suggestion?