Objective c URL应用程序将终止目标C

Objective c URL应用程序将终止目标C,objective-c,Objective C,我一直试图在de applicationWillTerminate事件中执行或请求url,但当我执行此操作时,其他功能,如: - (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse { [baseURL

我一直试图在de applicationWillTerminate事件中执行或请求url,但当我执行此操作时,其他功能,如:

- (NSURLRequest *)connection:(NSURLConnection *)connection
             willSendRequest:(NSURLRequest *)request            redirectResponse:(NSURLResponse *)redirectResponse {
  [baseURL autorelease];
  baseURL = [[request URL] retain];
  return request;
}

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
  [responseData setLength:0];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
  [responseData appendData:data];
}

它们不会被执行,我想是因为,最后执行的函数或事件是applicationWillTerminate。有没有办法达到或做到这一点。

如果你能做到这一点,我会非常惊讶<代码>应用程序将终止没有撒谎!当然,您可以设置请求并发送它,但一旦该方法返回,您的委托就无法长时间地等待以接收和响应回调


我担心您可能必须找到另一种方法来实现您所需的功能。

苹果公司的文档中指出,您执行此方法大约有五秒钟的时间来执行任务并返回。调用一个使用网络并将运行不确定时间的方法似乎违反了该方法的意图。

此时一个有用的技术就是保存一个标记,上面写着“下次启动时,应用程序需要运行此URL请求”。然后,下次启动应用程序时,如果该标记为true,则运行URL请求。这可能不适合所有情况,但它的优点是有足够的时间运行。

我昨天遇到了同样的问题,并使用下面的代码片段解决了它:

NSURLResponse* response = nil;
NSString* requestUrlString = <your URL>;
NSMutableURLRequest *syncRequest  = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestUrlString] cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30];
[NSURLConnection sendSynchronousRequest:syncRequest returningResponse:&response error:nil];
NSURLResponse*response=nil;
NSString*requestUrlString=;
NSMutableURLRequest*syncRequest=[NSMutableUrlRequestWithURL:[NSURL URLWithString:requestUrlString]缓存策略:NSURLRequestUseProtocolCachePolicy timeoutInterval:30];
[NSURLConnection sendSynchronousRequest:syncRequest ReturnInResponse:&响应错误:无];

我已经调试了代码,当我进入应用程序时,(登录)执行url,一个注销url,通知服务器退出,然后进程停止。它工作正常。当我尝试在applicationWillTerminate中执行此操作时,问题就开始了。当我在注销时运行url时,执行url的方法不会被执行。我必须让服务器知道我已注销,为此,我必须运行url。非常感谢。根据苹果的文档,我认为你不应该使用任何基于代理的网络通信。因此,也许您可以想出另一种发送单向网络流量的方法,这种方法不涉及检索数据或类似身份验证的复杂事务。它是什么类型的服务器?好的,谢谢你的建议,让我检查一下我使用的是什么类型的服务器,换句话说,我如何检查服务器的类型,你是什么意思?我的意思是,它是一个web应用程序吗?你的应用程序对网络有什么作用(在它必须终止之前)?是的,它是一个web服务。它不需要做任何事情,只需执行就可以让我知道我退出的服务器。事实上,当用户登录时,我已经在执行url,但问题是,如果你从未尝试进入应用程序线程,就会挂起。