【问题标题】:App crashes when tries to connect twitter in ios尝试在 ios 中连接 twitter 时应用程序崩溃
【发布时间】:2012-11-09 17:05:29
【问题描述】:

在我的 iPhone 应用程序中,我正在使用 ShareKit 实现 twitter 分享功能。当我尝试在设备中通过 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    

【问题讨论】:

  • 提供更多关于你如何执行的信息 - (void)connectionDidFinishLoading:(NSURLConnection *)aConnection...
  • 我添加了一些代码,请检查。

标签: ios twitter-oauth sharekit


【解决方案1】:

ShareKit 将尝试使用导航控制器堆栈到find 你的root view controller,然后从那里popmodal view controller。当它不能find 时,它会抛出这个error

您可以通过manually 使用以下调用设置root view controller correct

[SHK setRootViewController:myViewController];

检查answer

【讨论】:

  • 我尝试在链接的答案中使用 [SHK setRootViewController:myViewController],但仍然是同样的错误。
  • 而且它在模拟器中工作正常,问题仅在设备中。
  • 我试过 [SHK setRootViewController:self];仍然没有帮助。我已经用更多细节更新了问题,请检查。
猜你喜欢
  • 2020-03-06
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
相关资源
最近更新 更多