2012-11-09 79 views
0

在我的iPhone应用程序中,我正在使用ShareKit实现twitter共享功能。当我试图通过设备上的twitter分享时,该应用程序崩溃在尝试连接ios中的twitter时应用程序崩溃

- (void)connectionDidFinishLoading:(NSURLConnection *)aConnection 

而我收到错误消息;

NSInvalidArgumentException, [NSCFType tokenRequestTicket:didFinishWithData]: 

但它在模拟器上运行良好。我之前使用了相同的代码,而在另一个应用程序中没有任何更改,并且它仍然运行良好。该问题只在新创建的应用程序中。

请帮忙,如果有人需要更多的细节请让我知道。

更新 这些称为

- (void)tokenRequest 
{ 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ShareStarted" object:nil]; 
    [[SHKActivityIndicator currentIndicator] displayActivity:SHKLocalizedString(@"Connecting...")]; 
    NSLog(@"Url: %@\n Token: %@ \n Consumer: %@\n Key: %@",requestURL, requestToken, consumer, consumerKey); 
    OAMutableURLRequest *oRequest = [[OAMutableURLRequest alloc] initWithURL:requestURL 
                    consumer:consumer 
                     token:nil // we don't have a Token yet 
                     realm:nil // our service provider doesn't specify a realm 
                  signatureProvider:signatureProvider]; 


    [oRequest setHTTPMethod:@"POST"]; 

    [self tokenRequestModifyRequest:oRequest]; 

    OAAsynchronousDataFetcher *fetcher = [OAAsynchronousDataFetcher asynchronousFetcherWithRequest:oRequest 
         delegate:self 
       didFinishSelector:@selector(tokenRequestTicket:didFinishWithData:) 
        didFailSelector:@selector(tokenRequestTicket:didFailWithError:)]; 
    [fetcher start];  
    [oRequest release]; 
} 

- (void)tokenRequestTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data 
{ 
    if (SHKDebugShowLogs) // check so we don't have to alloc the string with the data if we aren't logging 
     SHKLog(@"tokenRequestTicket Response Body: %@", [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease]); 

    [[SHKActivityIndicator currentIndicator] hide]; 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"SharingCancel" object:nil]; 
    if (ticket.didSucceed) 
    { 
     NSString *responseBody = [[NSString alloc] initWithData:data 
                 encoding:NSUTF8StringEncoding]; 
     OAToken *aToken = [[OAToken alloc] initWithHTTPResponseBody:responseBody]; 
     [responseBody release]; 
     self.requestToken = aToken; 
     [aToken release];  

     [self tokenAuthorize]; 
    } 

    else 
     // TODO - better error handling here 
     [self tokenRequestTicket:ticket didFailWithError:[SHK error:SHKLocalizedString(@"There was a problem requesting authorization from %@", [self sharerTitle])]]; 
} 

更新 错误点

libobjc.A.dylib`objc_msgSend: 
0x360a25a0: teq.w r0, #0 
0x360a25a4: beq 0x360a25e6    ; objc_msgSend + 70 
0x360a25a6: push.w {r3, r4} 
0x360a25aa: ldr r4, [r0] 
0x360a25ac: lsr.w r9, r1, #2 
0x360a25b0: ldr r3, [r4, #8] 
0x360a25b2: add.w r3, r3, #8 
0x360a25b6: ldr r12, [r3, #-8] 
0x360a25ba: and.w r9, r9, r12 
0x360a25be: ldr.w r4, [r3, r9, lsl #2] //here EXC_BAD_ACCESS happened 
0x360a25c2: teq.w r4, #0 
0x360a25c6: add.w r9, r9, #1 
0x360a25ca: beq 0x360a25e0    ; objc_msgSend + 64 
0x360a25cc: ldr.w r12, [r4] 
0x360a25d0: teq.w r1, r12 
0x360a25d4: bne 0x360a25b6    ; objc_msgSend + 22 
0x360a25d6: ldr.w r12, [r4, #8] 
0x360a25da: pop.w {r3, r4} 
0x360a25de: bx  r12 
0x360a25e0: pop.w {r3, r4} 
0x360a25e4: b  0x360a2600    ; objc_msgSend_uncached 
0x360a25e6: mov.w r1, #0 
0x360a25ea: bx  lr 
0x360a25ec: nop  
0x360a25ee: nop  
0x360a25f0: nop  
0x360a25f2: nop  
0x360a25f4: nop  
0x360a25f6: nop  
0x360a25f8: nop  
0x360a25fa: nop  
0x360a25fc: nop  
0x360a25fe: nop  
+1

提供有关如何ü执行更多的信息 - (空)connectionDidFinishLoading:(NSURLConnection的*)aConnection ... – lakesh

+0

我加入了一些代码,请检查。 – Mithuzz

回答

0

ShareKit将尝试使用导航控制器堆栈findroot view controller方法,那么pop一个modal view controller从那里。它抛出这个error,当它不能find之一。

您可以通过manuallycorrect它通过使用下面的调用设置root view controller

[SHK setRootViewController:myViewController]; 

检查answer

+0

我试图通过在链接的答案中使用[SHK setRootViewController:myViewController],但仍然是相同的错误。 – Mithuzz

+0

而且它在模拟器中工作正常,问题只在设备中。 – Mithuzz

+0

http://stackoverflow.com/a/6263181/1106035 –

相关问题