我正在使用 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]
}
在导航控制器顶部的对象中,我尝试异步创建 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 类很好,因为在带有 TableView 的父视图控制器上,我从其中分配了 ArticleViewController,异步请求工作正常。