0

私は次のコードを持っていますが、リクエストを実行すると常にクラッシュします、何か考えはありますか?

NSString *responseBody = [[NSString alloc] initWithData:data
                                                       encoding:NSUTF8StringEncoding];

        NSLog(@"Response body is %@", responseBody);

        NSDictionary *accessTokenRequestParams = [[NSMutableDictionary alloc] init];
        [accessTokenRequestParams setValue:CONSUMER_KEY forKey:@"x_reverse_auth_target"];
        [accessTokenRequestParams setValue:responseBody forKey:@"x_reverse_auth_parameters"];            

        NSURL *url2 = [NSURL URLWithString:@"https://api.twitter.com/oauth/access_token"];
        TWRequest * accessTokenRequest = [[TWRequest alloc] initWithURL:url2 parameters:accessTokenRequestParams requestMethod:TWRequestMethodPOST];


        if (selectionIndex != -1)
            [accessTokenRequest setAccount:[self.twitterACAccounts objectAtIndex:selectionIndex]];

        // execute the request
        [accessTokenRequest performRequestWithHandler:
         ^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
             NSString *responseStr = 
             [[NSString alloc] initWithData:responseData 
                                   encoding:NSUTF8StringEncoding];

            NSLog(@"The user's info for your server:\n%@", responseStr);
         }];

更新:NSZombieEnabledをオンにすると

*** -[ACAccountStore typeForAccount:]: message sent to deallocated instance 0x7199c70

これはどこにもありません

4

2 に答える 2

2

どこかで ACAccountStore typeForAccount を呼び出します。しかし、ACAccountStore はなくなりました。AcAccount docs を見ると、特別な初期化子はありません。そのため、コードには次のようなものがある可能性があります。

static ACAccountStore* accountStore = [[[ACAccountStore alloc] init] autorelease];

その後、リクエストの完了時に、オブジェクトは OS によって消去されますが、accountStore はまだ古い、ぶら下がっているポインターを指しています。ポインターは、「静的」または「グローバル」、または他の静的またはグローバル オブジェクトのメンバーである可能性があります。

コードで ACAccountStore を探します。

于 2012-01-09T20:48:57.917 に答える
2

あなたのエラーはあなたの質問とは完全に異なって見えます。ACAccountStore クラスにエラーがあります。アカウント (ACAccountStore) にアクセス、操作、および保存するときに保持カウントを確認します。最初にメモリの割り当てが解除され、どこかで使用していると思います。

于 2012-01-09T20:52:49.103 に答える