我正在 iOS6 上开发一个 cocos2d 项目,当我试图在 Twitter 上分享一些东西时,它时不时地崩溃。
- 它只在物理设备上崩溃(iOS 6.1.3)
- 它在模拟器上运行没有任何问题(iOS 6.1)
使用 [twitterViewController addImage:] 时会出现问题- 我正在使用ARC
- 更新:问题是正文上的\n字符
当我调用 shareOnTwitter 函数时,它会打开 Twitter 共享。我可以关闭或发布,它可以很好地关闭视图。但是第二次,第三次甚至更多次按下按钮时它会因EXC_BAD_ACCESS而崩溃。
使用Enable Zombie Objects我收到此错误:
[SLTwitterComposeViewController respondsToSelector:]:消息发送到解除分配的实例
它不会在我的代码的任何特定行上崩溃。
堆:
libobjc.A.dylib`objc_msgSend:
0x3ad3b5a0: teq.w r0, #0
0x3ad3b5a4: beq 0x3ad3b5e6 ; objc_msgSend + 70
0x3ad3b5a6: push.w {r3, r4}
0x3ad3b5aa: ldr r4, [r0]
0x3ad3b5ac: lsr.w r9, r1, #2
0x3ad3b5b0: ldr r3, [r4, #8] <-------- Thread 1: EXC_BAD_ACCESS
0x3ad3b5b2: add.w r3, r3, #8
0x3ad3b5b6: ldr r12, [r3, #-8]
0x3ad3b5ba: and.w r9, r9, r12
0x3ad3b5be: ldr.w r4, [r3, r9, lsl #2]
代码:
- (void)shareOnTwitter {
UIImage *renderedImage = ...;
NSString *text = ...;
SLComposeViewController *twitterViewController = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[twitterViewController setInitialText:text];
[twitterViewController addImage:renderedImage];
[twitterViewController addURL:[NSURL URLWithString:kAPPURL]];
[twitterViewController setCompletionHandler:^(SLComposeViewControllerResult result){
switch (result) {
case SLComposeViewControllerResultCancelled:
break;
case SLComposeViewControllerResultDone:
break;
default:
break;
}
[[CCDirector sharedDirector] dismissViewControllerAnimated:YES completion:nil];
}];
[[CCDirector sharedDirector] presentViewController:twitterViewController animated:YES completion:nil];
}
谢谢你的帮助!
更新:
当我注释添加图像的行时,问题就解决了:
//[twitterViewController addImage:renderedImage];
这让我怀疑我的渲染图像功能,所以我将这一行替换为:
[twitterViewController addImage:[UIImage imageNamed:@"Icon@2x.png"]];
这个问题再次引人注目。很奇怪吧?