target-c EXC_BAD_ACCESS в моем коде - PullRequest
       10

target-c EXC_BAD_ACCESS в моем коде

0 голосов
/ 25 апреля 2010

Я новичок в Objective-C, и я пытаюсь написать небольшой пример приложения, которое получает XML с удаленного сервера и выводит его на консоль, но когда я делаю это, я получаю EXC_BAD_ACCESS, который я не понимаю: 1001 *

    NSString *FeedURL = @"MYURLGOESHERE";
    NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:FeedURL]];
    NSURLResponse *resp = nil;
    NSError *err = nil;
    NSData *response = [NSURLConnection sendSynchronousRequest: theRequest returningResponse: &resp error: &err];
    NSString *theString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 

    NSLog(@"Response: %@", theString);];

    [resp release];
    [err release];

Когда я закомментирую строку [resp release], я больше ее не получаю, может кто-нибудь объяснить мне это:)

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 апреля 2010

Вы выпускаете объект, который вам не принадлежит; так как «sendSynchronousRequest» не содержит ни слова «alloc», ни слова «copy» в своем имени, вы знаете, что любой объект, который он вам дает, будет автоматически освобожден с помощью «autorelease», и поэтому то, что у вас есть, фактически является двойным -удалено.

2 голосов
/ 25 апреля 2010
NSData *response = [NSURLConnection sendSynchronousRequest:…];

Это не метод alloc / create / copy, поэтому вы не должны выпускать response.

NSString *theString = [[NSString alloc] initWithData:…];

Но вы должны выпустить theString.

...