3

私は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クラスは問題ありません。

4

1 に答える 1

1

私はそれを解決し、ArticleViewのivarを作成したので、viewControllerは解放されず、デリゲートは何かを送信できます。

@property(strong) ArticleView *articleView;

ご協力ありがとうございました!

于 2013-01-17T23:11:22.490 に答える