Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.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 iOS-等待进程结束_Objective C_Ios_Uiviewcontroller - Fatal编程技术网

Objective c iOS-等待进程结束

Objective c iOS-等待进程结束,objective-c,ios,uiviewcontroller,Objective C,Ios,Uiviewcontroller,这是一个令人困惑的问题 我有一个应用程序正在调用类(a)来检查某些内容。然后我想调用一个类(B)来做其他事情 是否有可能确保流程B在流程A完成之前不启动 目前,我只是在RootVC中一个接一个地打电话 每个都显示一个模态视图,而我只能看到B [self performA]; [self performB]; 谢谢有几种工具可用于管理应用程序部分的执行顺序。但是,由于要显示视图控制器,因此有几个约束条件;您不想阻止主线程(否则应用程序将失去响应),必须在主线程上执行UI操作 在这种情况下,最常见

这是一个令人困惑的问题

我有一个应用程序正在调用类(a)来检查某些内容。然后我想调用一个类(B)来做其他事情 是否有可能确保流程B在流程A完成之前不启动

目前,我只是在RootVC中一个接一个地打电话

每个都显示一个模态视图,而我只能看到B

[self performA];
[self performB];

谢谢

有几种工具可用于管理应用程序部分的执行顺序。但是,由于要显示视图控制器,因此有几个约束条件;您不想阻止主线程(否则应用程序将失去响应),必须在主线程上执行UI操作

在这种情况下,最常见且可能最合适的解决方案是设置回调,在操作
a
完成时触发操作
B

作为
A
的一部分显示的模态视图控制器在成功完成其任务后可能会调用委托。然后,该代理可以开始任务
B


或者,您可以将一个块传递给
a
,该
a
将在其完成时执行。然后,该块可以执行任务
B

我接受了挑战,但失败了。 故事:我的应用程序一直在给我地狱般的更新,从一个iOS4目标升级到iOS6(iOS5/3GS有一个子代码)。它崩溃,除非我使用@try等。。。在重新尝试时有一个内置的延迟间隔(这很愚蠢,因为我不知道用户的数据库有多大,也不知道加载他们需要多长时间)。解决我真正的问题是一种痛苦的方式:在完全加载CoreData堆栈(日志)之前加载视图,我看不到让初始视图等待其NSMutableArray(基于我对象的CoreData数据库)加载的方法。基本上,我一直得到一个关于addObjectsSortedBy的错误:我的实体最重要的属性。 线程似乎是答案,但我需要加载一个NSMutableArray并将其输入到我的initialViewController中,它将在每次启动时可见(不包括首次启动),但我尝试(好的,12次尝试)使用线程只会使崩溃在应用程序启动的早期发生。 结果是:我向那些与那堆线争论不休的人低头。 我的解决方案是在AppDelegate.m中构建一个通知,告诉我的initialViewController viewDidLoad在执行任何其他操作之前先侦听它。如果它收到通知,它将提前跳过并完成正常过程,返回[super viewDidLoad];如果没有,它最终执行@try、@catch、@finally。在@try中,我尝试像通知到达一样继续操作(好像有点晚了),然后我通过向用户显示“请等待”标签来处理(@catch)错误,然后我告诉应用程序等待.xx并重复最初的addObjectsSortedBy:命令,好像一切都是从kösher开始的。我的应用程序的最佳点,日志中的图像和数据显示为.15,等待间隔为@50个测试条目,有空闲时间,负载无明显延迟。我可能会下降到.10@50条。 但是:我不知道如何扩展它,如果没有加载足够的日志来获取object.count!否则,就无法扩展延迟,这意味着它可能(读:will)不适用于包含多个条目(200+)的大型日志! 我有一个解决办法,但我会继续努力掌握线程,以便找到解决方案。老实说,一旦我点击了20个条目,通知就不会及时点击@try-to-earch。
如果可以,请使用线程。我一开始没能做到这一点,把自己逼到了一个角落,我为此付出了代价:我的应用程序一直需要大修,但我需要在我的腰包上留一个缺口,这样才值得。越早实现线程加载,对您的长期开发就越好。同时,您可以使用我的工作环境继续测试应用程序的其他部分。

如果您觉得有胆量,您甚至可以编写一个NSThread子类来执行A then B。@Jonah。谢谢。回调似乎简单而安全。我很欣赏你的清晰。@DavidDelMonte是的,如图所示,完成块的想法通常是最简单的。谢谢Rob。这看起来很有趣,但我真的不喜欢苹果的文档格式。你知道我可以掠夺的任何例子吗?这可能是一个很好的例子。然而,如果obj-c中的委托和协议模式对您来说是新的,那么您可能应该从一个更简单的示例开始。委托在Cocoa/UIKit框架中非常普遍,因此您需要了解如何使用委托并创建自己的委托。请在回答中使用一些格式。让它有点可读性。