Я использую ARC (нет, это не NDA).
У меня есть TableView, и в методе didSelectRowAtIndexPath, вызываемом из делегата, я создаю новый объект, подкласс UIViewController.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
[self.tableView deselectRowAtIndexPath:indexPath animated:YES];
NSDictionary *currentDict = [tableData objectAtIndex:indexPath.row];
int articleID = [[currentDict objectForKey:@"id"] intValue];
ArticleView *articleView = [[ArticleView alloc]initWithArticleID:articleID];
articleView.delegate = self;
articleView.hidesBottomBarWhenPushed=YES;
[self.navigationController pushViewController:articleView animated:YES]
}
В Object, который находится на вершине NavigationController, я пытался сделать ASIHTTPRequest асинхронно. После запуска запроса я получаю EXC_BAD_ACCESS.
- (void)viewDidLoad {
[super viewDidLoad];
ASIFormDataRequest *request2 = [[ASIFormDataRequest alloc]initWithURL:[NSURL URLWithString:@"http://api.b....."]];
request2.delegate = self;
[request2 setUserInfo:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithInt:articleID],@"article",nil]];
[request2 addPostValue:@"getArticle" forKey:@"action"];
[request2 addPostValue:[NSNumber numberWithInt:articleID] forKey:@"id"];
[request2 startAsynchronous];
}
После вызова метода «startAsynchronous» появляется индикатор NetworkActivity в строке состояния, но затем я получаю EXC_BAD_ACCESS. Если я уберу строку
request2.delegate = self;
работает, но мне нужен результат запроса!
Я попытался создать запрос с __strong, но безуспешно:
ASIFormDataRequest __strong *request2 = [[ASIFormDataRequest alloc]initWithURL:[NSURL URLWithString:@"http://api.b....."]];
Классы ASIFormDataRequest хороши, поскольку на родительском контроллере представления с табличным представлением, из которого я размещаю ArticleViewController, асинхронный запрос работает нормально.