0

これは私のコードです

TWRequest *twRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@%@", kTwitterURLBase, kTwitterMethodHelpConfiguration]]
                                           parameters:nil
                                        requestMethod:TWRequestMethodGET];

[twRequest setAccount:[self twitterAccount]];

[twRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {

     // Handling

}];

方法twitterAccount

- (ACAccount *)twitterAccount {

    NSString *identifier = [[Session getInstance] selectedAccountIdentifier];
    ACAccount *account = nil;

    if ([identifier length] > 0) {

        ACAccountStore *accountStore = [[ACAccountStore alloc] init];
        account = [accountStore accountWithIdentifier:identifier];
    }

    return account;
}

デバッガーが言うように、アカウントは正しく返されますが、コンソールに出力すると何も表示されず、空白になります。しかし、アカウント オブジェクトには参照があります。

リクエストの実行が開始された直後に、EXC_BAD_ACCESS エラーが発生します。スタックは、間違ったメッセージを送信したときにエラーが発生したことを示しています[ACAccount accountType]

それはメモリの問題であることは明らかです。私は ARC を初めて使用するので、そこに問題があると思います。

何か助けはありますか?

4

1 に答える 1

1

なぜこれをしなければならないのかわかりませんが、保持する ACAccountStore のインスタンス変数を宣言し、この方法でメソッドを変更すると

- (ACAccount *)twitterAccount {

    NSString *identifier = [[Session getInstance] selectedAccountIdentifier];
    ACAccount *account = nil;

    if ([identifier length] > 0) {

        if (accountStore_ == nil) {

            accountStore_ = [[ACAccountStore alloc] init];
        }

        account = [accountStore_ accountWithIdentifier:identifier];
    }

    return account;
}

すべてが完璧になります。なんで?:\

于 2012-09-12T14:07:27.363 に答える