Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.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
Ios 仅在应用程序之后执行选择器:didFinishLaunchingWithOptions?_Ios_Cocoa Touch_Grand Central Dispatch - Fatal编程技术网

Ios 仅在应用程序之后执行选择器:didFinishLaunchingWithOptions?

Ios 仅在应用程序之后执行选择器:didFinishLaunchingWithOptions?,ios,cocoa-touch,grand-central-dispatch,Ios,Cocoa Touch,Grand Central Dispatch,我需要在应用程序:didFinishLaunchingWithOptions中将一些剩余数据上载到服务器,但这需要一些时间,最终应用程序可能会被终止,因为它无法及时完成启动,因此我使用: [myObject performSelector:withObject:afterDelay:] 使用0.2f延迟,让应用程序:didFinishLaunchingWithOptions完成,但这看起来不是一个好主意,因此我想知道是否有一种方法可以在应用程序:didFinishLaunchingWithOp

我需要在
应用程序:didFinishLaunchingWithOptions
中将一些剩余数据上载到服务器,但这需要一些时间,最终应用程序可能会被终止,因为它无法及时完成启动,因此我使用:

[myObject performSelector:withObject:afterDelay:]
使用0.2f延迟,让
应用程序:didFinishLaunchingWithOptions
完成,但这看起来不是一个好主意,因此我想知道是否有一种方法可以在
应用程序:didFinishLaunchingWithOptions
之后执行选择器


我知道有
applicationIDBECOMEACTIVE
,但我需要在
application:didFinishLaunchingWithOptions

中执行它。如果使用0延迟,则控制返回到运行循环时将立即执行


但是,如果在appDidFinishLaunching中阻塞时间过长,则无论何时运行它,它都会阻塞。您确实应该将此代码移动到后台线程。在主线程上同步网络访问从来都不是一个好主意。

你的意思是如果延迟为0,那么它将在appDidFinishLaunching之后执行?@hzxu有效地,是的,他这样做了。这可能不是下一件事(例如,如果你连续两次呼叫延迟0,那么两个都不能是下一个),但不会有人为的停顿。然而,他关于网络接入的主要观点是站得住脚的。请特别关注
NSURLConnection+sendsynchronousrequest:queue:completionHandler:
——它与同步发送一样简单,但没有阻塞。“真的没有理由不使用它。@Tommy是的,我知道,网络是异步的,但我还需要用这种方法做一些核心数据的工作,必须在主线程上。@hzxu Core Data stuff不必在主线程上,如果您使用同一个持久存储协调器运行两个上下文,并写入一个小垫片来同步它们,或者将其中一个视为只读快照。但这是另一堆蠕虫,我可以理解,如果这是唯一麻烦的情况,为什么你会决定忽略这个问题。你也可以使用异步版本的API在主线程上运行网络连接而不阻塞。这样,您仍然可以使用正常的主运行中心。