Я пытаюсь создать приложение для iOS с использованием ASIHTTPRequest, но у меня возникают некоторые проблемы с его использованием.Чтобы продемонстрировать свои проблемы, я загрузил тестовый проект, который вы можете скачать здесь: http://uploads.demaweb.dk/ASIHTTPRequestTester.zip.
Я создал класс WebService, который использует протокол ASIHTTPRequestDelegate
:
#import "WebService.h"
#import "ASIHTTPRequest.h"
@implementation WebService
- (void)requestFinished:(ASIHTTPRequest *)request {
NSLog(@"requestFinished");
}
- (void)requestFailed:(ASIHTTPRequest *)request {
NSLog(@"requestFailed");
}
- (void) testSynchronous {
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
NSLog(@"starting Synchronous");
[request startSynchronous];
NSError *error = [request error];
if (!error) {
NSLog(@"got response");
}
}
- (void) testAsynchronous {
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
NSLog(@"starting Asynchronous");
[request startAsynchronous];
}
@end
Синхронный метод работает нормально, но асинхронный не работает вообще.Сначала requestFinished и requestFailed никогда не вызывались, и сейчас я получаю EXC_BAD_ACCESS.Два метода тестирования вызываются из моего * ViewController viewDidLoad
.Я надеюсь, что кто-то может помочь мне сделать эту работу.
EDIT1: Согласно этой теме , это возможно из-за Automatic Reference Counting
, который включен для моего проекта,Совет по теме для добавления [self retain]
, но я не могу сделать это с включенным ARC.Кто-нибудь с решением для этого?
EDIT2: Обновление в соответствии с ответом от MrMage .
@interface ViewController()
@property (nonatomic,strong) WebService *ws;
@end
@implementation ViewController
@synthesize ws = _ws;
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
[self setWs:[[WebService alloc] init]];
[self.ws testSynchronous];
[self.ws testAsynchronous];
}
@end