проблема с EXC_BAD_REQUEST в TWRequest - PullRequest
0 голосов
/ 09 января 2012

У меня есть следующий код, и он всегда дает мне сбой при выполнении запроса, любая идея?

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

этонет где найти

Ответы [ 2 ]

2 голосов
/ 10 января 2012

Ваша ошибка выглядит совершенно иначе, чем ваш вопрос. У вас есть ошибка в классе ACAccountStore. Проверьте свой счет хранения при доступе, управлении и хранении учетных записей (ACAccountStore). Я думаю, что вы сначала освобождаете память и используете где-то.

2 голосов
/ 10 января 2012

Где-то вы вызываете ACAccountStore typeForAccount. Но ACAccountStore ушел. Глядя на документы AcAccount, специальных инициализаторов нет, поэтому, скорее всего, в вашем коде есть что-то вроде:

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

затем в завершении запроса объект был очищен ОС, но ваш accountStore по-прежнему указывает на старый, теперь висящий указатель. Указатель может быть «статическим» или «глобальным» или членом какого-либо другого статического или глобального объекта.

Найдите ACAccountStore в своем коде.

...