2013-09-11 5 views
1

Я пытаюсь получить данные от ответа.
Я использую NSURLConnectionDelegate, NSURLConnectionDataDelegate.
В проекте используется ARC.NSMutableData - непризнанный селектор отправлен в экземпляр

@interface MainMenu() 

@property (nonatomic, unsafe_unretained) NSMutableData* wpData; 

@end 


@implementation 

-(void)sendRequest{ 

    NSURL* url = [[NSURL alloc] initWithString:@"http://smthing"]; 

    NSMutableURLRequest* request = [[NSMutableURLRequest alloc] init]; 


    NSString* reqBody = @"Block"; 

    NSData* reqData = [reqBody dataUsingEncoding:NSUTF8StringEncoding]; 

    [request setURL:url]; 
    [request setHTTPBody:reqData]; 
    [request setHTTPMethod:@"POST"]; 

    self.wpData = [NSMutableData data]; 
    NSURLConnection* conection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; 

    [conection start]; 
} 

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { 

//Here iI have [__NSMallocBlock__ appendData:]: unrecognized selector sent to instance 0x95f3fb0 
     [self.wpData setLength:0]; 


} 

@end 

Может быть, вы нашли мою ошибку

спасибо :)

ответ

7

Вашего указателя данных является unsafe_unretained свойством,

@property (nonatomic, unsafe_unretained) NSMutableData* wpData; 

и вы назначаете ему autoreleased экземпляра,

self.wpData = [NSMutableData data]; //Returns autoreleased object 

Поскольку вы выполняете асинхронный запрос на загрузку, вам требуется поддерживать объект данных. Вы никогда не знаете, когда пул авторасчетов будет сброшен, а незавершенный объект выйдет за рамки. В таких ситуациях вы должны retain автореализованный объект. Измените свойство strong и выделить объект данных,

@property (nonatomic, strong) NSMutableData* wpData; 

//... 

self.wpData = [[NSMutableData alloc] init]; //Better practice 

Надежда, что помогает!

+1

Работайте, спасибо! : D – WantToKnow

+0

Ты спасатель жизни. – Unheilig

Смежные вопросы