Ken*_*eth 3 iphone objective-c
我有一个[self parseXMLFileAtURL:path]方法.无论如何中途停止它?喜欢终止方法.
这样做的原因是我在一台PC上运行apache http服务器,如果服务器没有运行,如果调用此方法,应用程序将"挂起".所以我想要在一定时间后终止方法,5s也许.并显示警告信息.
我有两个建议......一个,如果可能的话,使用NSMutableURLRequest和NSURLConnection来检索数据; 这可以让你更好地控制超时等事情.
NSError * error;
NSURLResponse * response;
NSMutableURLRequest * request = [NSMutableURLRequest
requestWithURL:[NSURL URLWithString:@"http://..."]
cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
timeoutInterval:60.0];
// Not sure if you need this, but I frequently do POSTs as well, so whatever:
[request setHTTPMethod:@"GET"];
NSData * responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString * xml = [[[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding] autorelease];
Run Code Online (Sandbox Code Playgroud)
(注意:你必须检查错误响应,我为了清楚起见省略了它)
另外,理想情况下(因为在我的例子中我使用同步方法)这应该在后台线程上运行...但我发现使用"performSelectorInBackground:"手动在后台线程上运行它并使用同步方法更容易比我使用异步方法.请记住,如果你这样做,你将不得不创建自己的自动发布池...但这是两行,而且非常简单.
除此之外,有可能终止方法...你必须在不同的线程上运行它,如果花了太长时间就杀死线程......但实际上,NSMutableURLRequest并不是那么糟糕,并且它已经为您提供了您正在寻找的超时选项.
线程编程指南:http://developer.apple.com/iphone/library/documentation/cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html#//apple_ref/doc/uid/10000057i-CH15-SW2谈论杀戮线程...并告诉你(间接)如何做...但如果你只是杀死线程,你几乎可以保证泄漏一些东西.
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |