Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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
Objective c 线程/函数完成后调用函数_Objective C_Multithreading_Cocoa Touch_Ios - Fatal编程技术网

Objective c 线程/函数完成后调用函数

Objective c 线程/函数完成后调用函数,objective-c,multithreading,cocoa-touch,ios,Objective C,Multithreading,Cocoa Touch,Ios,我想在类中的一个线程/另一个函数完成后从另一个视图中删除一个视图。目前,我正在使用下面的代码在设置的时间段后删除它,但是很明显,函数完成时间是不同的 LoadingView *loadingView = [LoadingView loadingViewInView:self.view]; [loadingView performSelector:@selector(removeView) withObject:nil afterDelay:10.0

我想在类中的一个线程/另一个函数完成后从另一个视图中删除一个视图。目前,我正在使用下面的代码在设置的时间段后删除它,但是很明显,函数完成时间是不同的

LoadingView *loadingView =
    [LoadingView loadingViewInView:self.view];

    [loadingView
     performSelector:@selector(removeView)
     withObject:nil
     afterDelay:10.0];

有没有一个简单的方法可以做到这一点?我在网上查过了,似乎什么也找不到。这是否意味着我必须自己编写此功能?

您可以使用以下方法从另一个线程中删除视图:

[loadingView performSelectorOnMainThread:@selector(removeView) withObject:nil waitUntilDone:NO];

当然,您只需要在某个线程可以访问的地方维护对loadingView的引用。

当您要删除它时,为什么不能直接调用[loadingView removeView]?当然,请记住UIKit线程的安全性和所有…非常感谢,这非常有效。轻微问题,虽然不是主要问题,但在加载视图消失和显示数据之间有轻微(但明显)延迟。我正在加载的是来自线程中URL的图像,你知道如何防止吗?很好,黑色。已更新以反映此案例。嗯,仍有延迟。这与我从URL下载图片有关吗?@Jack:你什么时候会拒绝加载视图?如果在图像完全加载之前关闭它,显然会有延迟。