私は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]
}
オブジェクトで、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....."]];
ArticleViewControllerを割り当てるTableViewを持つ親ViewControllerでは、非同期要求が正常に機能するため、ASIFormDataRequestクラスは問題ありません。