Я сделал именно то, что дал . Я создал консольный проект для тестирования. И затем я создал класс под названием 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!
Ваш код выглядит хорошо. Как вы это называете? Как он встроен в ваше приложение? – Codo
Ваш код абсолютно прав. Проверить self - null или нет? –
@ Код: В моем приложении еще нет. Я создал консольный проект для его проверки. все файлы перечислены выше. Единственный дополнительный код находится в основной функции, которая выглядит как «RequestSender * rs = [[RequestSender alloc] init];». Я добавил точки останова для каждого метода делегирования, но никто не был захвачен. –