我正在尝试从我创建的自定义类中调用一个方法,在其中调用NSURLConnection
,但我的NSURLConnection
似乎没有执行。
这是我的代码:
int a = 0;
while(a < 10)
{
a++;
}
if (a == 10)
{
NSString *q = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://localhost/myURL.txt"] encoding:NSUTF8StringEncoding error:nil];
NSURLRequest *url = [NSURLRequest requestWithURL:[NSURL URLWithString:q]];
NSURLConnection *c = [[NSURLConnection alloc] initWithRequest:url delegate:self];
}
上面的代码应该从txt文件中获取一个url并调用它,当它被调用时,它必须创建一个新目录,但事实并非如此。
答案 0 :(得分:0)
您必须启动连接:
NSURLConnection *c = [[NSURLConnection alloc] initWithRequest:requestURL
delegate:self
startImmediately:YES];
或:
NSURLConnection *c = [[NSURLConnection alloc] initWithRequest:requestURL
delegate:self];
然后,如果您希望收到此对象的事件,请务必使您的协议符合协议NSURLConnectionDelegate, NSURLConnectionDataDelegate
。所以在你的文件头(.h
)中:
@interface YourClass <NSURLConnectionDelegate, NSURLConnectionDataDelegate>
并在您的文件实现(.m
)中,例如,您可以编写连接完成加载时调用的方法:
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
//your code
}
您将在Apple文档中看到其他委托方法。
如果你想在另一个线程中运行它,你应该在主线程中运行该方法,然后将队列传递给URLConnection:
NSOperationQueue *networkOperationsQueue = [NSOperationQueue new];
NSURLConnection *c = [[NSURLConnection alloc] initWithRequest:requestURL
delegate:self
startImmediately:NO];
[c setDelegateQueue:networkOperationsQueue];
[c start];
无论如何,上面的代码都是多余的:
while(a < 10)
{
a++;
}
if (a == 10)
如果你在while cycle
并等待a == 10
暂时出去,你不需要检查是否有等于10 ..因为是这样。