2010-05-15 3 views
0

Я надеюсь получить информацию заголовка http (размер файла) в асинхронном режиме.NSNotificationCenter и ASIHTTPRequest

Так что я инициализировать как коды:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(processReadResponseHeaders:) name:@"readResponseHeaders" 
              object:nil]; 

мои коды прочитать заголовок HTTP

-(void)processReadResponseHeaders: (ASIHTTPRequest *)request ;//(id)sender; 
{ 


    unsigned long long contentLength = [request contentLength]; //error occurs here 

} 

Он должен изменить исходный код ASIHTTPRequest.m

я добавить мой коды в функции readResponseHeaders для уведомления о событии)

- (void)readResponseHeaders 
{ 
    //......................... 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"readResponseHeaders" object:self];// 

} 

отчеты лог-файл:

2010-05-15 13: 47: 38,034 MYAPP [2187: 6a63] *** - [NSConcreteNotification ContentLength]: непризнанные селектор направлен например 0x46e5bb0

Добро пожаловать любой комментарии

Благодаря InterDev

ответ

0

наблюдателей NSNotificationCenter в селектор необходимо иметь одну из подписей:

-(void)observe; 
-(void)observeWithNotification:(NSNotification*)notification; 

Это не может быть ASIHTTPRequest (даже если вы поставите ASIHTTPRequest* в аргументе, это все еще NSNotification.)

Есть 3 свойства NSNotification: name, object и userInfo. Вы можете получить ASIHTTPRequest с object, если self является ASIHTTPRequest при проводке, что уведомление:

-(void)processReadResponseHeaders:(NSNotification*)notification { 
    ASIHTTPRequest* request = [notification object]; 
    unsigned long long contentLength = [request contentLength]; 
    ... 
} 
+0

KennyTM Спасибо большое – arachide