无法获得NSURLConnection,但应用程序一直在等待

时间:2011-11-07 07:52:04

标签: ios ios4 nsurlconnection nsurlrequest

所以我有一个连接到内部IP地址的应用程序。所以我想实现代码,以确保NSSURLConnections(即连接到无线网络),因为如果我不在无线网络上,我将无法连接到服务器。问题出现之前我可以检查它并且卡住了。我实施了

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {

但它永远不会被调用。关于如何进行的任何想法?

这是我创建连接的代码

NSURL *url = [NSURL URLWithString:@"http://192.168.192.4/file.php"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

在最后一行之后,它在狂野的蓝色边缘消失了!

** 更新 * **

这是按下按钮时调用的方法。

NSURL *url = [NSURL URLWithString:@"http://192.168.192.4/file.php"];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];

connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];

[request release];
[connection release];

我也实现了这些方法:

didFailWithError:(NSError *)

didFinishLoading

didRecieveData

我刚刚将连接更改为(nonatomic,retain)...没有强大的自动完成选项。任何指针?

2 个答案:

答案 0 :(得分:2)

在这种情况下,您没有使用ARC,但您有类似的问题。您在分配/初始化后立即释放connection,因此连接永远不会启动。删除[connection release]并通过两个委托方法中的属性释放它以完成连接,如下所示。

供参考: 如果你的项目使用ARC,connection将在运行循环结束后立即释放,因为没有任何东西保留它。尝试创建(非原子,强)属性以保留连接。连接完成时没有属性。

在MyClass.h中

@property (nonatomic, strong)   NSURLConnection * connection;
MyClass.m中的

@implementation MyClass
@synthesize connection;

- (void)requestData
{
    // create request

    self.connection = [NSURLConnection connectionWithRequest:...];

    // in connection delegate method for successful completion or error set self.connection = nil;
}

编辑:澄清ARC信息

编辑#2:在顶部添加非弧形答案

答案 1 :(得分:0)

返回的连接是否为非零?你是在主线程或配备运行循环的线程上做这个吗?