为什么我的NSURLConnection委托方法不被调用?
问题描述:
我已经完成了的指示。我为测试目的创建了一个控制台项目。然后我创建了一个名为RequestSender的类(请参阅下面的代码),并在主函数中创建了此类的一个实例。为什么我的NSURLConnection委托方法不被调用?
RequestSender.h:
#import <Foundation/Foundation.h>
@interface RequestSender : NSObject <NSURLConnectionDelegate> {
NSMutableData* d;
}
@end
RequestSender.m:
#import "RequestSender.h"
@implementation RequestSender
- (id)init {
self = [super init];
if (self) {
NSString* s = @"http://www.apple.com/";
NSURL* u = [[NSURL alloc] initWithString:s];
NSURLRequest* r = [[NSURLRequest alloc] initWithURL:u];
NSURLConnection* c = [[NSURLConnection alloc] initWithRequest:r delegate:self];
if (c) {
d = [NSMutableData data];
}
return self;
} else {
return nil;
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[d setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[d appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
}
@end
这无疑将在主线程和默认的运行循环中执行。然而,非授权方法被调用。
我做了很多测试并阅读了很多帖子,但我仍然没有线索。
请帮帮我。这让我发疯。 Thanx!
答
我相信你错过了开始连接的部分。连接类为此提供了另一种方法,或者您可以将其称为“c”对象。
NSURLConnection* c = [[NSURLConnection alloc] initWithRequest:r delegate:self];
if (c) {
d = [NSMutableData data];
[c start];
}
或
NSURLConnection* c = [[NSURLConnection alloc] initWithRequest:r delegate:self startImmediately:YES];
if (c) {
d = [NSMutableData data];
}
+0
此外,哇 - 没有意识到这个问题是那么古老。我希望你能够解决它,而不是等待答案! – shortstuffsushi
你的代码看起来还好。你怎么称呼它?它是如何嵌入你的应用程序? – Codo
你的代码是绝对正确的。检查自己是否为空? –
@代码:它不在我的应用程序中。我创建了一个控制台项目来测试它。所有文件都在上面列出。唯一额外的代码在主函数中,如“RequestSender * rs = [[RequestSender alloc] init];”。我在每个代表团方法中添加了断点,但没有一个被捕获。 –