2012-01-09 52 views
0

我有下面的代碼,它總是讓我崩潰時執行請求,任何想法?問題與TWRequest中的EXC_BAD_REQUEST

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); 
     }]; 

UPDATE: 打開NSZombieEnabled給我

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

這是沒有被發現

+1

嘗試設置一個異常斷點,然後張貼正確的是哪一行以及拋出了什麼異常。 – 2012-01-09 18:57:08

+0

請在塊上放置斷點(//執行請求)代碼,並找出哪條線會給你帶來問題。 – AAV 2012-01-09 18:59:27

+0

看到我上面的編輯 – adit 2012-01-09 19:58:46

回答

2

你的錯誤看起來完全不同於你的問題。你在ACAccountStore類中有錯誤。訪問,操作和存儲帳戶(ACAccountStore)時請檢查您的保留計數。我認爲你先解除分配內存,然後你在哪裏使用。

2

某處你打電話ACAccountStore typeForAccount哪裏。但ACAccountStore消失了。縱觀AcAccount文檔,沒有特殊的初始化,所以可能在你的代碼中有類似:

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

然後在完成該請求,對象已經被OS清除掉,但你的accountStore仍然指向舊的,現在懸掛的指針。指針可能是'靜態'或'全局'或其他靜態或全局對象的成員。

在您的代碼中查找ACAccountStore。