停止performSelectorInBackground

时间:2017-04-13 21:34:09

标签: objective-c

在objective-c中,当按下按钮时,我在使用以下文件上传文件时加载处理动画:

[self performSelectorInBackground:@selector(loadAnimation) withObject:self];

这样可以显示loadAnimation图像。

文件上传后如何停止?我试过了:

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(loadAnimation) object:nil];

但这并没有阻止动画。

loadAnimation是:

- (void) loadAnimation
{
    loadingPng.hidden=NO;
    NSArray *imageArray = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"0.png"], [UIImage imageNamed:@"1.png"], [UIImage imageNamed:@"2.png"], [UIImage imageNamed:@"3.png"], [UIImage imageNamed:@"4.png"], [UIImage imageNamed:@"5.png"], nil];

    loadingPng = [[UIImageView alloc] initWithFrame:CGRectMake(487, 500, 50, 50)];
    [self.view addSubview:loadingPng];
    loadingPng.animationImages = imageArray;
    loadingPng.animationDuration = 1.5;
    [loadingPng startAnimating];
}

1 个答案:

答案 0 :(得分:1)

只是为了清楚明白performSelectorInBackground创建另一个线程,它执行该方法并死掉(如果没有附加到任何runloop)。

如果在执行过程中出现屏幕上的某些内容并且您想隐藏它,只需调用隐藏它所需的任何例程。如果您使用UIActivityIndicatorViewUIImageView来电-(void)stopAnimating(在这种情况下为[loadingPng stopAnimating])。

没有必要在后台启动动画,实际上这是不应该做的事情,因为强烈建议只在主线程上进行涉及UI操作的任何事情。

这是一个应该转到后台的加载,动画触发停留在主线程上。