Как вызвать делегат в методе connectionDidFinishLoading - PullRequest
0 голосов
/ 10 марта 2012

Я использую Xcode 4.2.1 с ARC

Я пытаюсь намылить веб-сервис с помощью асинхронного запроса.У меня есть 2 имени класса Connector и EmergencyCall.EmergencyCall является делегатом Connector.

это Connector.h

@protocol ConnectorDelegate;

@interface Connector : NSObject

@property (retain,nonatomic) NSMutableData *webData;
@property (retain,nonatomic) NSString *theXML;
@property (nonatomic,assign) id<ConnectorDelegate> delegate;
@property (nonatomic,retain) NSString *theURL;

-(void)callWebServiceWithSoapBody:(NSString *)soapBody;

-(id)initWithURL:(NSString *)url;
+(id)ConnectorWithURL:(NSString *)url;

@end

@protocol ConnectorDelegate <NSObject>

-(void)callDidFinish:(Connector *)controller;

@end

в Connector.m Я использую NSURLConnection с асинхронным запросом

NSURLConnection * theConnection = [[NSURLConnection alloc] initWithRequest: делегатRequest: self];

три метода подключения

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [webData setLength: 0];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [webData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    NSLog(@"Cannot Connect");
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    NSLog(@"DONE. Received Bytes: %d", [webData length]);
    theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];
    NSLog(@"%@",theXML);
    [self.delegate callDidFinish:self]; <<<<< error SIGABRT and EXC_BAD_ACCES
}

Я могу подключиться к веб-службе и получить ответ в формате XML.и я попытался отправить XML в класс EmergencyCall для анализа из XML для объекта target-c, но я получаю сообщения об ошибках SIGABRT и EXC_BAD_ACCES.Я предполагаю, что это потому, что я установил другого делегата в

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

Теперь я не знаю, что делать, чтобы отправить XML в классе Connector в класс EmergencyCall.

Другой способ подключенияс синхронным запросом

NSURLResponse *response = nil;
NSError *error = nil;
NSData thewebData = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:response error:error];<<< the Xcode say autorelease diallowed in ARC

код Xcode сообщает, что автоматическое освобождение NSURLResponse и NSData дозвона в ARC

Поэтому я помечаю этот класс Connector с -fno-objc-arc, но ошибка все еще появляется.

Я не знаю, что мне делать?пожалуйста, кто-нибудь подскажет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...