私の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