EXC_BAD_ACCESS в NSLog, если только NSString не обрабатывается и не печатается первым - PullRequest
0 голосов
/ 09 мая 2011

Я пытаюсь понять цель C, поэтому я написал код ниже, чтобы попытаться напечатать содержимое веб-страницы:

id url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest* req = [NSURLRequest requestWithURL:url];
NSURLResponse* resp = [NSURLResponse new];
NSURLConnection* conn = [NSURLConnection new];
NSError* error = nil;
NSData* data = [NSURLConnection sendSynchronousRequest:req returningResponse:&resp error:&error];
NSString* html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//    printf([[html substringToIndex:50] cString]);
NSLog(html);

когда я запускаю это как есть, я получаю EXC_BAD_ACCESS в строке NSLog. Когда я раскомментирую вторую последнюю строку, это работает. Если я изменю printf на назначение, оно перестанет работать снова. Я явно что-то здесь упускаю из-за того, как работает модель памяти, но похоже, что закомментированная строка не должна иметь никакого значения, поскольку она создает новую строку, и она действительно выглядит как printf против присваивания не имеет значения. В отладчике Xcode при сбое программы я вижу, что html содержит строку HTML, которую я хотел напечатать.

1 Ответ

3 голосов
/ 09 мая 2011

попробуйте NSLog (@ "% @", html) вместо просто NSLog (html)

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