Попытка разделить функцию NSURLConnection на другой класс, но получить ошибку при делегировании - PullRequest
0 голосов
/ 13 января 2012

Я хочу создать приложение MVC для iphone, часть моей задачи - получить данные из Интернета, и я хочу отделить эту часть от модели, и вот что я написал

//Connection.h
#import <Foundation/Foundation.h>


@interface Connection : NSObject 
{
    NSMutableData * rawData;
    BOOL ready;
}


-(id) initWithData;
-(BOOL) isDataReady;

@end


//Connection.m
#import "Connection.h"


@implementation Connection

-(id) initWithData
{
    self = [super init];
    if(self != nil)
    {
        ready = NO;
        rawData = [[NSMutableData alloc]init];
        NSString * urlString = [NSString stringWithString:@"http://www.google.com"];
        NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
        [[NSURLConnection alloc] initWithRequest:[request delegate:self]];

        [rawData setLength:0];

        return self;
    }
    else {
        return nil;
    }
}
//I have implemented the connectiondidRecievedData and connectionDidFinishLoading also they are empty

но когда я хочу вызвать этот класс из моего контроллера, я получу ошибку

Connection * cn = [[Connection alloc] initWithData];

, и ошибка будет

2012-01-13 15: 26: 59.453 TestApp[20105: 207] - [NSURLRequest делегат:]: нераспознанный селектор отправлен в экземпляр 0x4e1f520 2012-01-13 15: 26: 59.455 TestApp [20105: 207] * Завершение работы приложения из-за невыполненного исключения «NSInvalidArgumentException», причина:'- [NSURLRequest делегат:]: нераспознанный селектор отправлен в экземпляр 0x4e1f520' * Стек вызовов при первом броске: (0 CoreFoundation 0x00dd05a9 exceptionPreprocess + 185 1 libobjc.A.dylib
0x00f24313 objc_exceptionFound
0x00dd20bb - [NSObject (NSObject) doesNotRecognizeSelector:] + 187 3
CoreFoundation 0x00d41966 __ пересылка
+ 966 4 CoreFoundation 0x00d41522 _CF_forwarding_prep_0 + 50 5 TestApp 0x0000257c - [Connection initWithData] + 339 6 TestApp
0x000020c3 - [TestAppViewController doTestB] + 122 7 UIKit
0x002c04fd - [UIApplication sendAction: в: из: для 8: 10: + +]UIKit 0x00350799 - [UIControl sendAction: to: forEvent:] + 67 9 UIKit
0x00352c2b - [UIControl (Internal) _sendActionsForEvents: withEvent:] + 527 10 UIKit 0x003517d8 - [UIControl касается: EIKIT: 1023]: Закончено: 1023 * EED* 0x002e4ded - [UIWindow _sendTouchesForEvent:] + 567 12 UIKit
0x002c5c37 - [UIApplication SendEvent:] + 447 13 UIKit * +1025 * 0x002caf2e _UIApplicationHandleEvent + 7576 14 GraphicsServices
0x01728992 PurpleEventCallback + 1550 15 CoreFoundation * +1027 * 0x00db1944 CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION + 52 16 CoreFoundation 0x00d11cf7 __CFRunLoopDoSource1 + 215 17 CoreFoundation 0x00d0ef83 __CFRunLoopRoop + 0 0 6 0 0 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 6 0 6 6 6 6 6 6 6 6 6 0 6 6 6 6 6 6 6 6 6 6 6 0 для льготного ужина для юниоров * 0 всего лишь 6 0 6 6 0 0 0 0 6 0 0 0 0 6 0 6 6 6 6 6 6 6 6 6 0 6 6 6 6 6 6 6 0Сообращ.ode + 97 20 GraphicsServices
0x017271c4 GSEventRunModal + 217 21 GraphicsServices
0x01727289 GSEventRun + 115 22 UIKit
0x002cec93 UIApplicationMain + 1160 23 TestApp
0 00000001e04 main_set 0 0 0000001e04 main 102вызывается после выброса экземпляра NSException

как я могу отделить NSURLConnection от другого класса?

1 Ответ

3 голосов
/ 13 января 2012

У вас есть ошибка в вашем коде здесь:

[[NSURLConnection alloc] initWithRequest:[request delegate:self]];

Это должно читать:

[[NSURLConnection alloc] initWithRequest:request delegate:self];
...